我想在创建期间和更新操作期间使用不同的reject_ifs。
我这里有附件模型
的嵌套属性has_many :attachments
accepts_nested_attributes_for :attachments, :allow_destroy => true, :reject_if => proc { |attributes| attributes['attachment_description'].blank? }
我想要创建操作的特定:reject_if
选项和更新操作的另一个特定选项...
例如:
更新...
如果描述为空或零,则拒绝:
:reject_if => proc { |attributes| attributes['attachment_description'].blank? }
创建...... 如果文件名为空或零,则拒绝:
:reject_if => proc { |attributes| attributes['attachment_file_name'].blank? }
我也不确定如何在:on=> :update
块中实施:on=> :create
和accepts_nested_attributes_for
任何变通办法都将受到赞赏。感谢。
修改
试图以这种方式使用它,但没有运气。
has_many :attachments, dependent: :destroy
accepts_nested_attributes_for :attachments, :allow_destroy => true, :reject_if => proc { |attributes| attributes['attachment'].blank? }, on: :create
accepts_nested_attributes_for :attachments, :allow_destroy => true, on: :update
它说......
undefined method `key?' for nil:NilClass
答案 0 :(得分:0)
您的attributes
哈希为零,因此您无法访问其'attachment'
密钥。
您应该确保散列永远不会为零,如果不能,则更改proc以处理nil大小写。