Rails 4 - 从关联模型存在的错误消息中删除属性名称
Rails 4 - Remove attribute name from error message for associated model presence
我有两个模型 user_item
和 user_item_images
。
user_item.rb
has_many :user_item_images, dependent: :destroy
validates :user_item_images, presence: { message: "You must include a picture" }
user_item_images.rb
belongs_to :user_item
我有一个只有一个 user_item_image
字段的嵌套表单,即 :picture
。当我提交一个空表格时,我收到这条消息
User item images You must include a picture
如何才能让消息显示
You must include a picture
我不知道如何编辑 en.yml 文件,因为错误是存在另一个模型而不是模型的属性。
我看了 here 但答案太宽泛,我想我需要自定义验证。
改为创建自定义验证:
has_many :user_item_images, dependent: :destroy
validate :has_a_picture
private
def has_a_picture
errors.add(:base, 'You must include a picture') if user_item_images.none?
end
为此,在您的 user_item_images 模型中,您需要:
validates :picture, presence: true
您可能还想查看是否有数据建模问题需要解决。无论如何,您当前的验证仅验证关联存在。因此,当您提交带有空图片字段的 user_item_images 表单时,失败的验证是您的 user_item 模型中的验证。与其尝试更改关联存在验证错误消息的内容,不如为 user_item_images 中的图片列添加验证。这样如果图片是空的,它会提高 'You must include a picture'。
我还会评论说,在 user_item 模型上进行存在验证 :user_item_images 不是必需的,这可能表明您需要解决更大的数据建模问题。
无需编写额外的代码。您应该使用内置于 I18n 中的 Rails' 来自定义 ActiveRecord 错误消息。
里面config/locales/en.yml
en:
activerecord:
errors:
models:
user_item:
attributes:
user_item_images:
presence: "You must include a picture"
我有两个模型 user_item
和 user_item_images
。
user_item.rb
has_many :user_item_images, dependent: :destroy
validates :user_item_images, presence: { message: "You must include a picture" }
user_item_images.rb
belongs_to :user_item
我有一个只有一个 user_item_image
字段的嵌套表单,即 :picture
。当我提交一个空表格时,我收到这条消息
User item images You must include a picture
如何才能让消息显示
You must include a picture
我不知道如何编辑 en.yml 文件,因为错误是存在另一个模型而不是模型的属性。
我看了 here 但答案太宽泛,我想我需要自定义验证。
改为创建自定义验证:
has_many :user_item_images, dependent: :destroy
validate :has_a_picture
private
def has_a_picture
errors.add(:base, 'You must include a picture') if user_item_images.none?
end
为此,在您的 user_item_images 模型中,您需要:
validates :picture, presence: true
您可能还想查看是否有数据建模问题需要解决。无论如何,您当前的验证仅验证关联存在。因此,当您提交带有空图片字段的 user_item_images 表单时,失败的验证是您的 user_item 模型中的验证。与其尝试更改关联存在验证错误消息的内容,不如为 user_item_images 中的图片列添加验证。这样如果图片是空的,它会提高 'You must include a picture'。
我还会评论说,在 user_item 模型上进行存在验证 :user_item_images 不是必需的,这可能表明您需要解决更大的数据建模问题。
无需编写额外的代码。您应该使用内置于 I18n 中的 Rails' 来自定义 ActiveRecord 错误消息。
里面config/locales/en.yml
en:
activerecord:
errors:
models:
user_item:
attributes:
user_item_images:
presence: "You must include a picture"