2012-04-02 9 views
0

fooというFooインスタンスを最初に作成して保存するモデルはFooです。:has_many barsです。 foo.barsを見ると、期待通りに空です。しかし、barインスタンスを作成した後はからfooインスタンスにインスタンスを作成します。 foo.barsはもはや空でなくても構いません。私がFoo.find(foo.id).barsを実行すると、期待どおりの空でない結果が返されます。 updatefooへの道があるので、私はそれをする必要はありません。ありがとう!アソシエーションが追加/削除されたときのモデルの関連付けを更新する

答えて

0

問題は、最初の呼び出しでfoo.barsがキャッシュされてしまうことです。 foo.bars(true)

2

これはキャッシュのために起こっている可能性があります。

foo = Foo.create! #=> executes sql, and caches the result 
foo #=> retrieved from cache 
foo.bars << Bar.create #=> creates the bar, and associates it with the foo instance 
foo.bars #=> retrieves the bars from cache, so it's [] 
Foo.find(foo.id).bars #=> executes sql, and returns [<bar# id: 1>] 

ことを回避するために、あなただけのfooの新しいインスタンスを作成するか、またはそれをリロードします。

foo.reload 

または、foo.bars(true)

関連する問題