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

时间:2016-02-27 18:27:46

标签: ruby-on-rails validation activerecord rails-i18n

我有两个模型 user_item user_item_images





user_item.rb




  has_many:user_item_images,dependent :: destroy
 validates:user_item_images,presence:{message:“你必须包含图片”}
  




user_item_images.rb




  belongs_to:user_item& #xA;  




我有一个嵌套的表单只有一个 user_item_image 字段,:picture 。当我提交一个空表单时,我收到此消息







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







如何制作图片以便消息改为

& #xA;




你必须包含一张图片







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





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




3 个答案:

答案 0 :(得分:3)

改为创建自定义验证:

  <ul> 
    <li>
       <a href="tkhome.html">Home</a>
    </li> 
     <li><a href="hobbies.html">Hobbies</a></li> <li><a href="contact.html">Contact</a></li> 
     <li><a href="imagepage.html">Image Gallery</a></li> 
  </ul> 

答案 1 :(得分:-1)

为此,在您的user_item_images模型中,您需要: validates :picture, presence: true 您可能还想了解是否要解决数据建模问题。无论如何,您当前的验证仅验证关联是否存在。因此,当您提交带有空图片字段的user_item_images表单时,失败的验证将是您的user_item模型中的验证。而不是尝试更改关联存在验证错误消息的内容,而是在user_item_images中为图片列添加验证。这样,如果图片为空,则会提示“你必须包含图片”。

我还评论说,进行状态验证:user_item模型上的user_item_images不是必需的,可能表示您需要解决的更大的数据建模问题。

答案 2 :(得分:-1)

没有必要编写额外的代码。你应该使用Rails&#39;内置在I18n中以自定义ActiveRecord错误消息。

内部config/locales/en.yml

en:
  activerecord:
    errors:
      models:
        user_item:
          attributes:
            user_item_images:
              presence: "You must include a picture"