我遇到了使用cocoon进行验证的问题以及允许使用模型的字段数。使用cocoon,rails3,我有一个嵌套的表单,我的位置有很多链接。
我需要将每个位置的链接数量限制为5.
在我的location.rb模型中,我有这个:
class Location < ActiveRecord::Base
has_many :links
accepts_nested_attributes_for :links, :reject_if => lambda { |a| a[:link_name].blank? }, :allow_destroy => true
validate :check_link_count
...
def check_link_count
if self.links.count > 5
self.errors.add :base, "No more than 5 links allowed."
end
end
...
最多可添加5个链接,一切正常。
如果我添加6个链接并保存,我会收到错误消息。也很好。
问题是当我尝试删除链接时 - 看起来链接只在保存后删除(我认为)。如果我因此删除所有字段,我仍然会收到错误。
有什么建议吗?还有其他方法可以验证吗?
答案 0 :(得分:3)
嗯。你可以试试这样的东西
def check_link_count
if self.links.reject(&:marked_for_destruction?).count > 5
self.errors.add :base, "No more than 5 links allowed."
end
end