Rails3 Cocoonvalidation嵌套字段计数

我遇到了使用cocoon进行validation的问题以及允许使用模型的字段数。 使用cocoon,rails3,我有一个嵌套的表单,我的位置有很多链接。

我需要限制每个位置的链接数量为5。

在我的location.rb模型中,我有这个:

class Location  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个链接并保存,我会收到错误消息。 也不错。

问题是当我尝试删除链接时 – 看起来链接只在保存后被删除(我认为)。 因此,如果我删除所有字段,我仍然会收到错误。

有什么建议? 还有其他方法可以validation吗?

嗯。 你可以尝试这样的事情

  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