1

我有一个嵌套表单,它在更新时会为所有嵌套属性创建重复条目。为了防止这种情况,我想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_iflambda 中引用实例?

4

1 回答 1

1

我建议这不是:reject_if应该负责的事情。:reject_if意味着出于非常明显和基本的原因拒绝参数组,例如没有填写名字或电子邮件。如果它有点复杂,那么您应该只对正在创建的模型进行验证。而且,如果您在不想这样做时一直在创建重复项,那么您应该更进一步,并防止这些参数最终出现在您的控制器中,例如。固定意见。

于 2013-05-24T10:44:21.667 回答