验证具有嵌套属性的错误消息

时间:2014-09-24 13:39:11

标签: ruby-on-rails ruby validation activerecord

现在几个小时后我尝试对我的嵌套属性(图像)进行各种验证,我有这个验证,检查至少要上传1张图像。

class AnimalImage < ActiveRecord::Base
mount_uploader :image, AnimalImageUploader
belongs_to :animal

validate :limit_num_of_images

def limit_num_of_images
  if image.size < 1
    errors[:base] << "Please add an image"
  end
end

end

这里只是为了澄清一些事情,每当验证发生时,假设它检查父模型,然后如果使用nested_attributes则按顺序检查子项?你不必告诉它检查儿童验证是否存在?

我的主要问题是构造错误消息,似乎设置错误[:base]会生成错误信息,如此

Animal images base Please add an image

如何进行此设置,以便用户仅将以下内容视为错误消息

Please add an image

由于

修改

这就是我在视图中显示消息的方式

<% @animal.errors.full_messages.each do |msg| %>
  <li><%= msg %></li>
<% end %>

虽然作为一个快速修复我已经创建了一个帮助从消息中删除不需要的文本(不喜欢它虽然太hacky)

def error_edit(message)
  msg = message
  msg.gsub('Animal images base', ' ')
end

1 个答案:

答案 0 :(得分:0)

根据Docs

errors.add(:base, "Message")

在你的例子中:

class AnimalImage < ActiveRecord::Base
mount_uploader :image, AnimalImageUploader
belongs_to :animal

validate :limit_num_of_images

def limit_num_of_images
  if image.size < 1
    errors.add(:base, "Please add an image")
  end
end

end