カテゴリとadがあります。 カテゴリhas_many:広告 + カウンタキャッシュ:ads_count。私はgem awesome_nested_setを使用してネストされたカテゴリを作成します。したがって、カテゴリ1はカテゴリ2の親/子になります。カテゴリ3の親となることができます。カテゴリ#インデックスに必要なものは、特定のカテゴリや子供に属する広告カテゴリ(または「孫」など)。私の解決策は、some_nested_categories.sum(:ads_count)です。しかし、インデックスページに多数のカテゴリがあると、そのすべてのデータを取得するために多くのクエリが実行され、時間がかかりすぎるとします。これをより効率的にするにはどうすればいいですか?手伝ってくれてありがとう!ネストされたモデルの数の合計
0
A
答えて
0
counter_cache
のアイディアを手動でsum_cache
の種類に拡張することができます。nested_ads_count
とすることができます。さ
その後、カテゴリが新しいが
- 処理する必要がある4一般的な例が存在することになる新しい親カテゴリ」
- カテゴリに「移動/追加」削除された(あるいは親から削除)親の
nested_ads_count
ときのいずれか、現在のnested_ads_count
または012を更新し、」
after_update
コールバックを取得します更新。最初のケースを解決します。
awesome_nested_setはafter_add
とafter_remove
コールバックnested_ads_count
を再計算を使用して、他の2例
を解決します。
計算し、この
def reset_nested_ads_count
self.nested_ads_count = some_nested_categories.sum(:nested_ads_count) + self.ads_count
end
この方法のようになりますnested_ads_count
をキャッシュする方法が最適である場合に使用され、カウントはそれだけでないとして、それが更新される頻度よりも大きいことを周波数数が更新されるときに時間がかかる高価なクエリであり、数が見られる必要があるときではありません。
あなたの巣にループがある場合(a> b> a、またはさらに狡猾な> b> c> ...> a)自分自身を得ることができます無限ループでawesome_nested_setがこのケースをブロックしていることを明示的に示しているものは見ていません。
関連する問題
- 1. PostgreSQL:JSONネストされた要素の合計?
- 2. ネストされたiifステートメントの合計
- 3. Linqネストされたクエリの合計
- 4. Python - ネストされたdictの合計値
- 5. ネストされたループの合計
- 6. のRails:ネストされたモデル
- 7. Backbone.jsのネストされたモデル
- 8. SQLネストされた場所(合計)
- 9. XSLTネストされたループと合計
- 10. ネストされたグリッド内のテキストボックスの合計を計算する
- 11. 複数のモデルでネストされたモデルですか?
- 12. Elasticsearch:フィルタリングされたネストされたフィールドのスクリプト化された合計でフィルタリング
- 13. Rのネストされたリストの行の合計R
- 14. ネストされたリストの最初の要素の合計
- 15. 複数のネストされたSELECTクエリと2つのカラムの合計
- 16. ネストされたng-repeatの項目の合計
- 17. ネストされたモデル用のレールフォーム
- 18. ネストされたモデルの作成 - Rails 3.1
- 19. モデル内のMvvmネストされたプロパティ
- 20. ネストされたモデルの作成
- 21. ネストされたモデルと親のバリデーション
- 22. ネストされたモデルとバックボーンのコレクション
- 23. before_actionとモデルのネストされた属性
- 24. simple_formでネストされたモデルのルート
- 25. 垂直にネストされたデータフレーム内のリスト要素を合計
- 26. ネストされた配列の合計を取得する
- 27. ネストされたハッシュからのRuby合計
- 28. AutoMapper:ネストされたモデルの行数の制限
- 29. SUM関数を使用しないネストされたリストの合計(演習)
- 30. Elasticsearch: [「オブジェクトタイプ」:このタイプのレコードの数]集計ネストされたオブジェクト
look&sounds good、thx – Mart17