問題タブ [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 に答える
292 参照

ruby-on-rails - counter_cache カラムでフィクスチャを書く

counter_cache 列を持つフィクスチャを記述するのは面倒で複雑です。test_helper.rb でメソッド reset_counters を使用しようとしましたが、うまくいきませんでした。それを機能させるのと同じ方法ですか?

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

ruby-on-rails - Mongoid 3.1.6 の未定義のメソッド `reset_counters'

mongoid をバージョン 3.1.6 に更新したところ、reset_countersメソッドを使用してモデルの関係を追跡できるようになりました。しかし、gem の更新前と同じように、まだこのエラーが発生します。

私の Gemfile には、次のバージョンがあります。

また、Gemfile.lock は次のように述べています。

カウンターを更新するモデルは次のとおりです。

そして、カウンターフィールドがあるモデルは次のとおりです。

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

ruby-on-rails - Rails:counter_cacheをインクリメントする方法は?

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::

::: 解決済み :::

Vote モデルで counter_cache を見つけ出し、トピックで使用することができました。以下の質問を更新しました。Topic モデルに votes_count が設定されたら、それをビューに入れ、コントローラーでカウントを更新するだけで済みました。かなりシンプルになりました。しかし、情報を見つけることはそうではなかったので、これは他の人を助けるはずです。答えを求めて下に行きます。

乾杯

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::

:::編集:::

:::歴史については以下を参照してください:::

これは元の投稿の編集です。gem ソリューションを試す前に、私は自分が持っているものに本当に近づいています。投票モデルでcomment_cacheを使用しましたが、キャッシュをインクリメントする方法がわかりません。

ビューで topic.votes.size を呼び出すと、アクティブ レコードの列挙なしでカウントが表示されるようになりました。

index.html.erb

しかし、comment_cache は負の数を許可しません。カウントに数値を加算および減算するのではなく、レコードに対して作成/破棄を引き続き使用しています。増減する方法は?これらのメソッドは、値が欠落していると言っています。現在、@topic.votes.last.destroy が失敗するのは理にかなっています。破棄する票がこれ以上ないため、集計がゼロ未満になることはありません。

負の数が可能になるように comment_cache 値をインクリメント/デクリメントするように設定するにはどうすればよいですか? @topic.votes.increment と @topic.votes.increment_counter を試しましたが、何を使用すればよいかわからない 2 つのパラメーターが要求されます。試した

@topic.increment_counter(:votes_count, params[:id])

しかし運がない。

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::

:::この行の下の歴史:::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::

Rails をもう一度見直して、トピックに関する簡単な投票カウンターを作ろうとしています。私がやりたいことは、投票レコードの集計 (整数) 列をインクリメント/デクリメントすることです。

トピックには has_may :votes、および Vote belongs_to :topic

私が使用したtopics_controller.rbで

しかし、ビューの値ではなく、投票数ではなく、興味深い ActiveRecord キーを取得します。

index.html.erb:

インクリメントは表示されませんが、Rails Consoleから:

私はroutes.rbをうまくセットアップしたと思いますが、ダブルはよくわかりません

とにかく、インクリメントする方法が間違っているか、何かが足りないと思います。どんな助けでも感謝します。乾杯

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

ruby-on-rails - Rails 4: has_many の counter_cache :dependent との関連付けを介して: :destroy

同様の質問がすでに尋ねられていますが:

実際に私の問題に対処するものはありません。

has_many :through Association を持つ 3 つのモデルがあります。

結合管理モデルには、次の属性があります。

それぞれが何個持っているか、それぞれが何calendars個持っているかを数えたいと思います。useruserscalendar

次のように counter_cache を使用するつもりでした。

(そしてもちろん、対応するマイグレーションをテーブルとテーブルに追加します:count_of_calendars。)users:count_of_userscalendars

しかし、その後、Rails Guides で次の警告に出くわしました。

4.1.2.4 :依存

:dependent オプションを次のように設定した場合:

  • :destroy、オブジェクトが破棄されると、関連付けられたオブジェクトに対して destroy が呼び出されます。
  • :delete、オブジェクトが破棄されると、関連するすべてのオブジェクトが、destroy メソッドを呼び出さずにデータベースから直接削除されます。

このオプションは、他のクラスの has_many アソシエーションに接続されている属しているアソシエーションでは指定しないでください。これを行うと、データベース内のレコードが孤立する可能性があります。

したがって、それぞれが持っている数と、calendarsそれぞれuserが持っている数を数える良い習慣は何でしょうか?userscalendar

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

cakephp - CakePHP 3: BelongsToMany を使用した CounterCache

関連付けがありBelongsToMany、テーブルはPostsTableとです。TagsTablePostsTagsTable

ここで CakePHP の本 (関連)で説明されているように、次のフィールドがあります。

今のところ、すべてが正しく機能しています。tags.post_countですから、おわかりのように、フィールドを で使用したいと思いますCounterCache

私はCakePHP の本に従いましたが、これは特殊なケースだと思いますPostsTable

手伝って頂けますか?ありがとう。

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

ruby-on-rails - Rails と楽観的ロック: 関連付けを介してオブジェクトを作成すると、DB のロック バージョンが変更されますが、Ruby オブジェクトでは変更されません。

私のプロジェクトには定型文のコピーがたくさんあります。

私は次の仕様を持っています:

失敗します:

関連付けられたオブジェクトが作成されると、DB で lock_version フィールドが更新されることがわかりましたが、ruby オブジェクトはこれを認識しません。したがって、を追加するproject.reloadと、仕様は次のようになります。

この動作は予期されたものですか? カウンターキャッシュと関係がありますか?

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

ruby-on-rails - Rails 4カウンターキャッシュが同期していません

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

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

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

ruby-on-rails-4 - Rails Counter Cache 同じモデルですか?

model Taskおよび各タスクhas_manyの他のタスクがあります。

各タスクが持つ sub_tasks の数にカウンター キャッシュを追加できますか? どのように?