docsによれば、アソシエーションに:autosave => false
を設定すると、親を保存するときにこれらの関連付けを保存しないでください。これは私のために働くようには見えません。私はちょうどバニラのRails 3.0.8アプリを作成しました。ここには何があります:ActiveRecordの自動保存:falseが動作しないように見える
class Foo < ActiveRecord::Base
has_many :bars, :autosave => false
accepts_nested_attributes_for :bars
end
class Bar < ActiveRecord::Base
belongs_to :foo
end
f = Foo.new :name => 'blah', :bars_attributes => [{:name => 'lah'},{:name => 'lkjd'}]
f.save
f.bars
=> [#<Bar id: 1, name: "lah", foo_id: 1, created_at: "2011-06-20 20:51:02", updated_at: "2011-06-20 20:51:02">, #<Bar id: 2, name: "lkjd", foo_id: 1, created_at: "2011-06-20 20:51:02", updated_at: "2011-06-20 20:51:02">]
何ですか? bars
がなぜ保存されたのですか?
私は狂った薬を飲んでいるように感じる!私は何が欠けていますか?
更新:ネストされた属性機能を使用して構築されていない場合でも、は子供を自動的に保存するように見えます。これはバグだと思う。
f.bars.first.new_record 'の出力は何'あなたが与えられたコードを実行した後? – Luke
上記の 'f.bars'を出力しました。 'new_record?'はIDで永続化されているので、falseを返すことは明らかです。これもまた、 'accepts_nested_attributes_for'が使用された場合にのみ発生します – brad