モジュール: Mongoid::関連付け::参照::CounterCache
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- Mongoid::関連付け
- 定義:
- lib/mongoid/関連付け/referenced/counter_cache.rb
Overview
Mongoid::Document に含まれる混合モジュールにより、参照された n 対多の関連付け内の反対側のドキュメントの数をキャッシュする機能が追加されます。
名前空間で定義済み
Modules: クラスメソッド
クラスメソッドの概要を折りたたむ
-
。定義_コールバック(関連付け) = クラス
private
カウンター キャッシュ フィールドの更新に関連するコールバックを追加します。
インスタンス メソッドの概要を折りたたむ
-
#reset_counters (*counters) = オブジェクト
.count() メソッドを使用して指定されたカウンターをリセットします。 dbからのクエリ。
クラスメソッドの詳細
。定義_コールバック(関連付け) =クラス
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
カウンター キャッシュ フィールドの更新に関連するコールバックを追加します。
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
# ファイル 'lib/mongoid/関連付け/referenced/counter_cache.rb' 行99 デフォルト 自己.定義_コールバック(関連付け) name = 関連付け.name cache_colln = 関連付け.counter_cache_count_name.to_sym 関連付け.逆_クラス.タップ 行う |klass| klass.after_update 行う foreign_key = 関連付け.foreign_key 場合 送信(" ") 元の, Current = 送信(" ") ただし、 元の.nil? 関連付け.klass.と共に(duration_context.for_field(関連付け.klass)) 行う |_Class| _Class.デクリメント_カウンター(cache_colln, 元の) end end 場合 レコード = __send__(name) ただし、 Current.nil? レコード[cache_colln] = (レコード[cache_colln] || 0) + 1 レコード.クラス.と共に(レコード.duration_context) 行う |_Class| _Class.インクリメント_カウンター(cache_colln, Current) 場合 レコード.永続化された場合 end end end end end klass.after_create 行う 場合 レコード = __send__(name) レコード[cache_colln] = (レコード[cache_colln] || 0) + 1 場合 レコード.永続化された場合 レコード.クラス.と共に(レコード.duration_context) 行う |_Class| _Class.インクリメント_カウンター(cache_colln, レコード._id) end レコード.delete_change(cache_colln) end end end klass.Before_delete 行う 場合 レコード = __send__(name) レコード[cache_colln] = (レコード[cache_colln] || 0) - 1 ただし、 レコード.frozen? 場合 レコード.永続化された場合 レコード.クラス.と共に(レコード.duration_context) 行う |_Class| _Class.デクリメント_カウンター(cache_colln, レコード._id) end レコード.delete_change(cache_colln) end end end end end |
インスタンス メソッドの詳細
#reset_counters (*counters) =オブジェクト
.count() メソッドを使用して指定されたカウンターをリセットします。 dbからのクエリ。 このメソッドは、カウンターが破損した場合、または新しいカウンターが コレクションに追加された場合に役立ちます。
22 23 24 25 26 |
# ファイル 'lib/mongoid/関連付け/referenced/counter_cache.rb' 行22 デフォルト delete_counters(*カウンター) 自己.クラス.と共に(duration_context) 行う |_Class| _Class.delete_counters(自己, *カウンター) end end |