問題タブ [counter-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
498 参照

ruby-on-rails - Rails counter_cache'd の関連付けが update_attributes で更新されています。counter_cache 列が更新されない

次のような counter_cache 列を使用する Rails 2.3.14 アプリを実行しています。

ワークショップをグループに直接割り当てると、カウンター キャッシュが正常に更新されます。

ただし、group_id を従来の Rails コントローラー スタイルでワークショップに一括割り当てすると、キャッシュは更新されません。これは 2.3.14 のバグだと思います。

古いバージョンにも存在します: http://railsforum.com/viewtopic.php?id=34473

ただし、投稿者の「解決策」には二重カウントのバグがあります。直接割り当てると、デフォルトの Rails アップデーターコールバック 1が取得されますが、update_attributes では機能します

そのため、いくつかのことを実行できます。params ハッシュから group_id を取り除き、直接割り当てることができます。または、Workshop モデルの update_attributes にモンキー パッチを適用して、これを行うこともできます。

@workshop.update_attributes を呼び出す可能性のある他の人が同じバグに遭遇する可能性があるため、params ハッシュを取り除くことは避けたいと思います。モンキー パッチの update_attributes は最も安全に思えますが、完全に、恐ろしく間違っています。

他の提案はありますか?

ありがとう!

0 投票する
1 に答える
302 参照

ruby-on-rails - counter_cache がインクリメントしていません...何が間違っていますか?

これは非常に単純なようで、私の人生を惨めなものにしています。レール 3.1.3.

編集: 以下のアドバイスに基づいて、移行に t.integer "versions_count", :default => 0 を追加し、ロールバックし、データベースを再作成しました。現在、versions_count は 0 のままです。

コンソール:

助けてください、気が狂いそうです。

編集 2: 関連するレコードを削除すると、カウンターの値が減算されるようです。しかし、それは決して追加を取得しません。

0 投票する
1 に答える
110 参照

ruby-on-rails - _かわった?counter_cacheを使用する場合のメソッド

新しいコメントが追加されたら、属性:average_rateを更新する必要があります。私はcomments.rbにあります

およびpage.rb

page.rbのupdate_average_rateメソッド

しかし、それは機能しません。私がしているとき

update_average_rateメソッドでは、「false」を出力しますが、comments_countが変更されます。私が間違っていることは何ですか?前もって感謝します

0 投票する
2 に答える
88 参照

mysql - ファイルソートを防ぐために ORDER 条件を最適化するにはどうすればよいですか?

MySQL で条件によってクエリを並べ替える場合、ファイルソートを回避するにはどうすればよいですか?

has_videosカウントだけでなくブール列もキャッシュした方がよいでしょうか?

0 投票する
2 に答える
579 参照

ruby-on-rails - Rails counter_cache バランス

現在、ユーザーの残高を計算しています

すべてのユーザーの預金を差し引き、すべての購入を差し引くクエリを実行しています。何千ものトランザクションがある場合、これはうまくスケーリングしません。ユーザーの残高を計算する最良の方法は何ですか? ユーザーごとにこれを計算するように counter_cache をカスタマイズする方法はありますか?

0 投票する
1 に答える
385 参照

ruby-on-rails - Railsカウンターキャッシュが本番環境で機能していません

Rails 3.1.4(ruby 1.8.7)のカウンターキャッシュメカニズムに奇妙な問題があります。開発サーバーでアプリを実行しているときは、すべてがうまく機能します。本番環境に切り替えた後、comments_count列は、コメントを1つだけ追加するたびに+2ずつ増加します。

ログを調べたところ、増分クエリが2回表示されました。

私はこの一日を直そうとしていますが、何が悪いのかわかりません。開発モードでは、すべてが正常に機能します。Rails2からのアップグレード後に問題が発生しました。

0 投票する
1 に答える
641 参照

cakephp - Cakephp hasAndBelongsToMany とカウンターキャッシュ?

HABTM セットアップでカウンターキャッシュを動作させる方法を知っている人はいますか?

0 投票する
2 に答える
3615 参照

ruby-on-rails - :counter_cache => 合計を格納する場合は true

私はテーブルusersとを持っていますscores。協会は次のとおりです。

テーブルusersには という列がありますscores_count。この列には、テーブル内のすべての値の合計を格納しますscores

scores列にすべての合計を格納するためにこの方法を使用したかったscores_count: :counter_cache => true

ただし:counter_cache => true、テーブルの行数のみを保存しますscores。テーブルのすべての値の合計を格納する同様の方法はありますscoresか? または、このタスクは自分で実装する必要がありますか?