8

belongs_to :my_model, counter_cache: true間違った値を設定しているカウンター キャッシュ (でセットアップ) を持つ Rails 4.2 アプリがあります。文字通り、コンソールを呼び出して呼び出しMyModel.associated_model_countて取得20し、次に呼び出しMyModel.associated_model.countて取得することができ19ます。モデルを保存しても、これは修正されません。

値は大きくずれているようには見えませんが、一部は明らかにずれており、その理由はわかりません。

4

1 に答える 1

8

あなたの質問の一部に答えて、うまくいけばデバッグに役立つように、カウンター列は と でのみ更新されるcreateためdestroy、オブジェクトを保存してもカウンターの更新はトリガーされません。詳細は、:counter_cacheオプションの下のエントリの下にあります: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

どこでオフになるかを特定するためにクリーンな状態にしたい場合は、 MyModel.reset_counters(id, *counters)( http://apidock.com/rails/ActiveRecord/CounterCache/reset_counters )を使用してカウンターの更新を手動でトリガーできます。

役立つ回答と議論を含む関連する質問: Rails counter_cache が正しく更新されない

于 2015-12-28T19:42:48.040 に答える