0

我想要在创建期间和更新操作期间使用不同的 reject_ifs。

我在这里有附件模型的嵌套属性

has_many :attachments
accepts_nested_attributes_for :attachments, :allow_destroy => true, :reject_if => proc { |attributes| attributes['attachment_description'].blank? }

我想要一个:reject_if用于创建操作的特定选项和另一个用于更新操作的特定选项...

例如:

在更新...

如果 description 为空白或 nil 则拒绝:

:reject_if => proc { |attributes| attributes['attachment_description'].blank? }

On Create... 如果文件名为空或 nil,则拒绝:

:reject_if => proc { |attributes| attributes['attachment_file_name'].blank? }

我也不确定如何实施:on=> :update和阻止:on=> :createaccepts_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
4

1 回答 1

0

您的attributes哈希为零,因此您无法访问其'attachment'密钥。

您应该确保哈希值永远不会为零,如果不能,请更改 proc 以处理 nil 情况。

于 2013-05-16T08:26:38.207 回答