Rails3茧验证嵌套字段计数
问题描述:
我遇到问题验证与茧和模型允许的字段数。使用cocoon,rails3,我有一个嵌套表单,我的位置有很多链接。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个链接并保存,则会出现错误。也不错。
问题是,当我尝试并删除链接 - 它似乎链接只保存(我认为)后删除。如果我因此删除所有字段,我仍然收到错误。
有什么建议吗?有另一种验证方法吗?
答
嗯。你可以尝试这样的事情
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
太棒了,那很容易。将不得不阅读marked_for_destruction S. – simonmorley 2012-04-09 22:30:31