从lambda中获取模型实例

时间:2013-05-23 15:29:39

标签: ruby-on-rails lambda nested-attributes

我有一个嵌套的表单,在更新时,会为所有嵌套的属性创建重复的条目。为了防止这种情况,我想对reject_if使用accepts_nested_attributes选项。代码可能如下所示:

accepts_nested_attributes_for :implicants, :reject_if => lambda { |a| a.is_a_duplicate? }

不幸的是,a这里是一个ActionController :: Parameter,而不是我正在使用的类的实例。我试过这个:

accepts_nested_attributes_for :implicants, :reject_if => lambda { |a| self.is_a_duplicate?(a) }

但这会导致对类的调用,而不是实例。有没有办法从reject_if lambda中引用实例?

1 个答案:

答案 0 :(得分:1)

我认为这不是:reject_if应该负责的事情。 :reject_if是出于非常明显和基本的原因拒绝参数组,例如没有填写名字或电子邮件。如果它有点复杂,那么你应该只对模型进行验证。创建。如果你在不想要的时候一直在创建副本,那么你应该进一步向上发展,防止这些参数完全由你的控制器结束。修正意见。