2012-06-18 10 views
5

我知道,你可以有:如果除一个之外的所有字段都为空,reject_if是否可用于拒绝嵌套资源?

accepts_nested_attributes_for :foo, :reject_if => proc { |a| a[:bar].blank? } 

有没有一种办法,而不是说像

accepts_nested_attributes_for :foo, :reject_if => blah[:bar].blank? and flah[:bar].blank? 

accepts_nested_attributes_for :foo, :reject_if => all fields except record_date.blank? 

感谢

+0

同样的问题。列出proc中的所有空白字段不是很干DRY ...我有一个嵌套的表单,带有默认值的选择框(不能为空)。我想忽略这个值,但我还没有看到干净的东西...... –

回答

9

我对这个有点晚了,但你可以这样做:

accepts_nested_attributes_for :foo, 
           reject_if: ->(attributes){ 
           attributes.except(:key).values.all?(&:blank?) 
           } 
+0

这应该是公认的答案 - 它干净而有效。 –

+1

谢谢!另一个迟到的提示:使用'except'时要小心字符串键。你可以使用'attributes.with_indifferent_access'来解决这些情况。 –

相关问题