accepted_nested_attributes_for具有多个嵌套和多态关联

时间:2015-05-25 18:07:10

标签: ruby-on-rails ruby rails-activerecord nested-forms nested-attributes

我尝试在更新模型时传递两级嵌套属性哈希:

class Item < ActiveRecord::Base
  has_many :steps
  accepts_nested_attributes_for :steps
end

class Step < ActiveRecord::Base
  belongs_to :item
  has_many :messages, as: :discussable
  accepts_nested_attributes_for :messages
end

class Message < ActiveRecord::Base
  belongs_to :discussable, polymorphic: true
end

因此,当我尝试像下面这样传递哈希时,它根本不会说任何嵌套模型被更改的父模型(changed_for_autosave?为假,因为nested_records_changed_for_autosave?为假)

{steps_attributes: [{id: "1", messages_attributes: [{body: "Some message"}]}]}

但是当Step模型的某些字段发生变化时,它可以正常工作(换句话说,一个级别的嵌套工作正常)。

我现在所做的是:@item.steps.each(&:updated_at_will_change!)在控制器中,这显然是一个肮脏的黑客。这是Rails的预期行为或错误吗?

0 个答案:

没有答案