モジュール: Mongoid::関連付け::アクセス
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- Mongoid::関連付け
- 定義:
- lib/mongoid/asaction/accessors.rb
Overview
このモジュールには、 getter と setter を介した関連付けへのアクセスと、新しい関連付けを作成するためのビルダへの委任方法に関連するすべての動作が含まれています。
クラスメソッドの概要を折りたたむ
-
。定義_ビルダ。(関連付け) = クラス
embeddeds_one 関連付けのビルダ メソッドを定義します。
-
。refine_creator.(関連付け) = クラス
embeddeds_one 関連付けの作成メソッドを定義します。
-
.refine_existance_check!(関連付け) ⇒ クラス
関連付けの有無のチェックを追加します。
-
.refine_getter!(関連付け) ⇒ クラス
関連付けの getter を定義します。
-
.refine_ids_getter!(関連付け) ⇒ クラス
関連付け内の document の ID の getter を定義します。
-
.refine_ids_setter!(関連付け) ⇒ オブジェクト 。
この関連付け内の document を ID 別に設定できる setter メソッドを定義します。
-
。refine_setter。(関連付け) = クラス
関連付けのセッターを定義します。
インスタンス メソッドの概要を折りたたむ
-
# __ build__ (name, object, concern, associated_fields = nil) = nil) = nil からプロキシ
関連するドキュメントを構築し、ドキュメントが nil でない限り関連付けを作成し、このドキュメントに関連付けを設定します。
-
# create_relation (オブジェクト、関連付け、選択した_フィールド = nil)= nil)================================================
オブジェクトと関連付けメタデータから関連付けを作成します。
-
# restore_relation_criteria (name) = オブジェクト
関連付けプロキシ内の基準をリセットします。
-
# set_relation (名前, 関係)= プロキシ
指定された名前を持つクラスの変数インスタンスに、指定された関連付けを設定します。
クラスメソッドの詳細
。定義_ビルダ! (関連付け) ⇒ クラス
embeddeds_one 関連付けのビルダ メソッドを定義します。これは #Build_name として定義されます。
387 388 389 390 391 392 393 394 395 396 397 398 399 400 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 387行 デフォルト 自己.定義_ビルダ。(関連付け) name = 関連付け.name 関連付け.逆_クラス.タップ 行う |klass| klass.re_defined_method("build_#{name}") 行う |*args| 属性, = parse_args(*args) ドキュメント = 工場.構築(関連付け.関係_クラス, 属性) _構築 行う 子 = 送信(" #{ name } = ", ドキュメント) 子.run_colbacks(: build) 子 end end end end |
。refine_creator!(関連付け) ⇒ クラス
embeddeds_one 関連付けの作成メソッドを定義します。これは #create_name として定義されます。オブジェクトが構築された後、すぐに保存されます。
412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 412行 デフォルト 自己.refine_creator.(関連付け) name = 関連付け.name 関連付け.逆_クラス.タップ 行う |klass| klass.re_defined_method("create_#{name}") 行う |*args| 属性, = parse_args(*args) ドキュメント = 工場.構築(関連付け.klass, 属性) doc = _assigning 行う 送信(" #{ name } = ", ドキュメント) end doc.保存 保存 場合 new_record? & & 関連付け.stored_foreign_key? doc end end end |
。refine_existance_check。(関連付け) = クラス
関連付けの有無のチェックを追加します。
277 278 279 280 281 282 283 284 285 286 287 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 277行 デフォルト 自己.refine_existance_check。(関連付け) name = 関連付け.name 関連付け.逆_クラス.タップ 行う |klass| klass.MongoDB_eval <<-END, __FILE__, __NET__ + 1 デフォルト #{name}です。 Within#{name}).空白かどうか} の終了エイリアス :has_#{name}? :#{name}? END end end |
。refine_getter!(関連付け) ⇒ クラス
関連付けの getter を定義します。ここでは何も特別ではありません。関連付けが存在する場合はそれのインスタンス変数を返すか、それを構築します。
299 300 301 302 303 304 305 306 307 308 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 299行 デフォルト 自己.refine_getter.(関連付け) name = 関連付け.name 関連付け.逆_クラス.タップ 行う |klass| klass.re_defined_method(name) 行う |再読み込み = false| 価値 = get_relation(name, 関連付け, nil, 再読み込み) 価値 = 送信("build_#{name}") 場合 価値.nil? & & 関連付け.自動構築 & & !Within_自動ビルドではありませんか 価値 end end end |
。refine_ids_getter!(関連付け) ⇒ クラス
関連付け内の document の ID の getter を定義します。参照された関連付けが多い場合にのみ指定する必要があります。
319 320 321 322 323 324 325 326 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 319行 デフォルト 自己.refine_ids_getter.(関連付け) ids_method = " #{ 関連付け 。 名前 。 to_s 。 単数形の } _ids " 関連付け.逆_クラス.タップ 行う |klass| klass.re_defined_method(ids_method) 行う 送信(関連付け.name).プル型(:_id) end end end |
。refine_ids_setter!(関連付け) ⇒ オブジェクト
この関連付け内の document を ID 別に設定できる setter メソッドを定義します。定義されたセッターは、指定された ID を持つ document を検索し、見つかった document で通常の関連付けセットを呼び出します。ID セッターは、参照された多くの関連付けに対してのみ定義する必要があります。
@ param [ Mongoid::関連付け::Relatable ] associated 関連付けの関連付け。
@return [ Class ] 設定されるクラス。
368 369 370 371 372 373 374 375 376 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 368行 デフォルト 自己.refine_ids_setter.(関連付け) ids_method = "#{関連付け。名前。to_s。単数形の }_ids=" 関連付け.逆_クラス.alased_ associateds[ids_method.調べます] = 関連付け.name.to_s 関連付け.逆_クラス.タップ 行う |klass| klass.re_defined_method(ids_method) 行う |ids| 送信(関連付け.setter, 関連付け.関係_クラス.find(ids.拒否(&:blank?))) end end end |
。refine_setter!(関連付け) ⇒ クラス
関連付けのセッターを定義します。これは、いくつかの条件に基づいていくつかの処理を実行します。既存の関連付けがある場合は、ターゲット置換が行われます。そうでない場合は、指定されたターゲットとの新しい関連付けが作成されます。
339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 339行 デフォルト 自己.define_setter!(関連付け) name = 関連付け.name 関連付け.逆_クラス.タップ 行う |klass| klass.re_defined_method(" #{ name } = ") 行う |オブジェクト| Within_自動ビルド 行う 場合 価値 = get_relation(name, 関連付け, オブジェクト) 価値 = __Build__(name, 価値, 関連付け) ただし、 価値.respond_to?(: 置換) set_relation(name, 価値.replacement(オブジェクト.置換可能)) else __Build__(name, オブジェクト.置換可能, 関連付け) end end end end end |
インスタンス メソッドの詳細
# __ build__ (name, object, concern, associated_fields = nil) = nil) = nil からプロキシ
関連するドキュメントを構築し、ドキュメントが nil でない限り関連付けを作成し、このドキュメントに関連付けを設定します。
25 26 27 28 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 25行 デフォルト __Build__(name, オブジェクト, 関連付け, scheduled_fields = nil) 関係 = create_relation(オブジェクト, 関連付け, scheduled_fields) set_relation(name, 関係) end |
# create_relation (オブジェクト、関連付け、選択した_フィールド = nil)= nil) ================================================
オブジェクトと関連付けメタデータから関連付けを作成します。
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 42行 デフォルト create_relation(オブジェクト, 関連付け, scheduled_fields = nil) キー = @attributes[関連付け.inverse_type] タイプ = キー ? 関連付け.リゾルバ.model_for(キー) : nil ターゲット = 場合 t = 関連付け.構築(自己, オブジェクト, タイプ, scheduled_fields) 関連付け.create_relation(自己, t) end 埋め込み関連付けではこれを実行する必要があります。 保留中のコールバック # はドキュメントをマテリアライズド化するときにのみ追加されます。これは次のみ発生します: 埋め込み関連付けの場合は #。 にはデータベースへの呼び出しはありません。 参照された関連付けの#構築。 場合 関連付け. 配列(ターゲット).各 行う |doc| doc.試す(:run_pending_colbacks) end end ターゲット end |
# restore_relation_criteria (name) =オブジェクト
関連付けプロキシ内の基準をリセットします。 基礎となる ID 配列を同期するために多対多の関連付けで使用されます。
69 70 71 72 73 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 69行 デフォルト delete_relation_criteria(name) return ただし、 instance_variable_defined?(" @_ #{ name } ") 送信(name).delete_unloaded end |
# set_relation (名前, 関係)=プロキシ
指定された名前を持つクラスの変数インスタンスに、指定された関連付けを設定します。 コードのクリーンアップのためだけにヘルパーとして使用されます。
85 86 87 |
# ファイル 'lib/mongoid/asaction/accessors.rb' は、 85行 デフォルト set_relation(name, 関係) instance_variable_set(" @_ #{ name } ", 関係) end |