foo
というFoo
インスタンスを最初に作成して保存するモデルはFoo
です。:has_many bars
です。 foo.bars
を見ると、期待通りに空です。しかし、bar
インスタンスを作成した後はからfoo
インスタンスにインスタンスを作成します。 foo.bars
はもはや空でなくても構いません。私がFoo.find(foo.id).bars
を実行すると、期待どおりの空でない結果が返されます。 update
foo
への道があるので、私はそれをする必要はありません。ありがとう!アソシエーションが追加/削除されたときのモデルの関連付けを更新する
0
A
答えて
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)
。
関連する問題
- 1. モデルを削除した後の関連付けを削除する方法
- 2. アソシエーションの関連付けを続ける
- 3. 関連するエンティティの追加、削除、および更新
- 4. Sylius、関連製品の追加/削除/更新
- 5. Firebase duplicate table新しい日付が追加、更新、削除されたときの表示
- 6. has_many:throughアソシエーションを反復処理するときに関連付けられた結合モデルにアクセスする
- 7. ReactiveListの使い方アイテムが追加/削除/変更されたときにUIが更新される
- 8. Railsネストされたモデル - アソシエーションを削除する
- 9. Doctrine2 - 新しいものを追加してManyToManyの関連付けを削除するには
- 10. belongs_toとhas_manyの関連付けのコメントを削除する
- 11. 子を関連付けられたキーで削除します。
- 12. アソシエーションを追加/削除するためのRailsフォーム
- 13. ライブラリモデルに新しい関連付けを追加する方法
- 14. Rails:モデルの関連付け
- 15. Railsモデルの関連付け
- 16. CakePHP 2.0ページネーションとサムの関連付け関連するモデル
- 17. Rails - ネストされたモデルを関連付ける方法
- 18. アップロードされた画像をモデルに関連付ける方法
- 19. モデルを保存する前に追加のアソシエーション属性を更新する
- 20. Rails:3つのモデル間のポリモーフィックな関連付けを追加する
- 21. Sequelize既存のエントリを新しく作成されたエントリに関連付けて追加し、新しく作成/更新されたエントリを取得する
- 22. モデルの関連付けとデータモデリング
- 23. Ember.jsとRailsモデルの関連付け
- 24. 削除は関連付けに反映されません
- 25. has_manyとの関連付けの作成または更新
- 26. データベース設計:アソシエーションの関連付けを作成する
- 27. Laravel:すべての追加、編集、削除がcompany_idに関連付けられています。
- 28. 関連する* .pyファイルが削除されたときに* .pycファイルが削除される理由
- 29. ネストされたフォームのチェックボックスにラベルを付けて、関連付けられたモデルに書き込む
- 30. CakePHPモデルの関連付けテーブル(データと新しいテーブル)