問題タブ [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.
ruby-on-rails - update_attribute を使用して Rails 3 移行を実行すると読み取り専用エラーが発生する
counter_cache を追加しようとしていますが、この Rails 3 への移行でエラーが発生し、解決できないようです。
移行は
エラーは次のとおりです。
== AddItemsCountToStore: 移行中 ======================================== -- add_column( :stores, :items_count, :integer, {:default=>0}) -> 0.0680 秒のレーキが中止されました! エラーが発生しました。これ以降の移行はすべてキャンセルされました:
items_count は読み取り専用としてマークされています C:/Ruby192/lib/ruby/gems/1.9.1/gems/activerecord-3.0.0/lib/active_record/persistence.rb:115:in `update_attribute'
何か案は?
ruby-on-rails - test::unitとmochaでcounter_cacheをテストする方法
なんとかしてカウンターキャッシュのテストをモックアウトできるかどうか知りたいです。これで、counter_cacheをテストするためのすべてのレコードを作成しています。カウンターキャッシュを効果的にテストするための良い方法はありますか?
編集: 私はそれをテストすることに興味があります、カウンターキャッシュは特定の関連付けに存在します。
ruby-on-rails - Ruby on Rails 3.0 でカウンターキャッシュ列にインデックスを追加する必要がありますか?
環境: Rails 3.0.4、MySQL、Ruby 1.8.7
次の表があります。
n 人以上のユーザーがいる国を定期的に検索しています。カウンター キャッシュ 'users_count' にインデックスを追加することは理にかなっていますか?
追加されたユーザーごとにわずかなオーバーヘッドが追加されることはわかっていますが、カウンターキャッシュの仕組みに他に欠けているものがないことを確認したいと思います。
ruby-on-rails - RubyonRailsカウンターキャッシュエラー
Unknown key(s): counter_cache
RoRアプリにカウンターキャッシュ列を実装しようとするとエラーが発生します。
この質問でモデルの関連付けを実装しました:モデルの関連付けの質問
これが私の移行です:
ただし、http://media.railscasts.com/videos/023_counter_cache_column.movを見た:counter_cache => true
後、後でVideoVoteモデルに移行する必要があるのではないかと思いましたbelongs_to :video
。ただし、これを行うと、次のエラーが発生します。
wrong number of arguments (2 for 1)
私は何が間違っているのですか?
ruby-on-rails - save(:validate => false)の対象は何ですか?
counter_cache
次のようなコードを使用して、いくつかのカスタムを実装しました。
私の質問はこれです-コマンドModel.save(:validate => false)
は実際にまたはのようなものを超えて何を防ぎますvalidates_with
かbefore_validation
?
検証せずに既存の保存を保持すると、カスタムcounter_cachesは影響を受けますか?
sql - カウントのための個々のデータベース呼び出しの回避
私のモデルは次のようになります。
俳優のインデックスを表示するときに、各俳優が主演した映画の数を表示したいと思います。これはで実行できますが@actor.movies.count
、これにより、のSQLクエリが生成されますeach actor
。たとえば、アクターが30人の場合、これにより、イニシャルに加えて30個の追加クエリが発生します。
Actor.all
各俳優が参加した映画の数を最初の電話に含める方法はありますか?そしてそれにより、たった1回の呼び出しで物事を成し遂げることができます。これが上記のカウントでソートされている場合、追加のボーナス。
更新:
提供されたすべての回答は役に立ちました。ある時点でダートスリングコンテストになりましたが、うまくいきました。私はあなたのすべての提案のミッシュマッシュをしました。アクターモデルにmovies_counter列を追加しました。私のジョブモデルに追加しましbelongs_to :actor, :counter_cache => :movies_counter
た。これは見事に機能し、ムービーを作成または破棄すると、コードを追加しなくても自動的に更新されます。
cakephp - ネストされたモデルのcakephpカウンターキャッシュ
ネストされたモデル構造を持っています
id
parent_id
counter
name
自動カウンタキャッシュの使用方法
ruby-on-rails - Rails 3:公開されている場合にのみcounter_cacheを更新します
これは難しい質問です。
記事、レビューなど、複数のコンテンツタイプを持つプロジェクトがあります。各コンテンツタイプにはコメントがあり、コメントは任意のコンテンツタイプに属することができるため、多形です。
すべてのコンテンツページに合計コメントカウンターを配置して、コメントの数を表示したいと思います。これを行うために、カウンターキャッシュを実装しました。(@ article.comments.countのようなものはより多くのクエリであり、スレッド化されたコメントにAncestry gemを使用しているため、子コメントはその数にカウントされず、ルートコメントのみがカウントされます。)
カウンターキャッシュはうまく機能し、コメントの正確な数を示しますが、いつものように1つの小さな落とし穴があります。コメントは常にすぐに公開されるわけではなく、登録済みのユーザーのみがすぐに公開できます。これらのコメントの:statusは「2」です。未登録のユーザーはモデレートキューに入れられます。これらのコメントの:statusは「1」です。
問題は、カウンターキャッシュがそれらをすべて同じようにカウントすることです。したがって、モデレート中の4つのコメントと1つの承認されたコメントがある場合、合計カウントは5になります。
comment.statusが「2」でない場合にインクリメントしないようにカウンターキャッシュに例外を追加する方法はありますか?同様に、コメントリソースのバックエンドにあり、そのコメントを公開するように設定している場合(ステータスを2に設定)、関連するポリモーフィック/コンテンツタイプの増分のカウンターキャッシュを作成する方法(モデル、コントローラーなど)はありますか?
コメント.rb
article.rb
ruby-on-rails - 「counter_cache」を使用しているときに after_save コールバックを呼び出すにはどうすればよいですか?
関連に対して counter_cache が有効になっているモデルがあります。
@author.posts_count
また、「作成者」ごとにキャッシュフラグメントを使用しており、その値が UI に表示されているため、更新されるたびにそのキャッシュを期限切れにしたいと考えています。問題は、(increment_counter と decrement_counter) の内部がcounter_cache
Author のコールバックを呼び出していないように見えるため、Post オブザーバー (またはキャッシュ スイーパー) 内からキャッシュを期限切れにする以外に、それがいつ発生したかを知る方法がないことです。きれいに見えません。
何か案は?
ruby-on-rails - いくつかの条件で :counter_cache を使用する
私は次のモデルを持っています:
Post モデルでは次のように利用されます。
1) 特定の post_id の entity_tags の数。これは、EntityTag モデルの :post で :counter_cache を介して実行できます。2) 特定の post_id の一意の :entity_id 値に基づいて、UNIQUE EntityTags の数も追跡したいと考えています。これを達成するにはどうすればよいですか?:counter_cache をある種の制約付きで使用できますか? または、まったく異なるアプローチがありますか?