繁体   English   中英

Rails 4-从错误消息中删除属性名称以关联模型

[英]Rails 4 - Remove attribute name from error message for associated model presence

我有两个模型user_itemuser_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的嵌套表单。 提交空白表格时,我会收到此消息

用户项目图像必须包含图片

我该如何做,以使消息改为

你必须包括一张照片

我不知道如何编辑en.yml文件,因为错误是由于存在另一个模型而不是模型的属性。

在这里看过但是答案太宽泛了,我认为我需要自定义验证。

而是创建一个自定义验证:

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中的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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM