クラス: Mongoid::関連付け::参照::HasAndBelongsToMany::Proxy
- 継承:
-
Mongoid::関連付け::参照::HasMany::Proxy
- オブジェクト
- プロキシ
- 多
- Mongoid::関連付け::参照::HasMany::Proxy
- Mongoid::関連付け::参照::HasAndBelongsToMany::Proxy
- 次による拡張機能。
- クラスメソッド
- 定義:
- lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb
Overview
has_and_belongs_to_many 関連付けの透過的なプロキシ。 このクラスのインスタンスは、サブジェクト ドキュメントで 関連付け getter メソッドを呼び出すときに返されます。 このクラスは Mongoid::関連付け::Proxy から継承され、そのメソッドのほとんどを関連付けのターゲット、つまりロードする必要があるドキュメントの配列に転送します。
名前空間で定義済み
Modules: クラスメソッド
定数の概要
プロキシから継承された定数
インスタンス属性の概要
プロキシから継承された属性
#_association, #_base, #_target
インスタンス メソッドの概要を折りたたむ
-
# ` `(*args)=Array=Document ===========================================================<Document>
ドキュメントまたはドキュメントの配列を関連付けに追加します。
-
ビルド番号のビルド(属性 = {}、タイプ = nil) {|doc| ... } = ドキュメント(#new)
属性から新しいドキュメントを作成し、保存せずにこの関連付けに追加します。
-
#concat(documents) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。
-
# delete (ドキュメント) = ドキュメント(また: #delete_one)
関連付けからドキュメントを削除します。
-
#nullify (置換= [])=オブジェクト(また:nullify_all、#client、#parse)
外部キーと参照を削除して、ベース ドキュメントとターゲット ドキュメント間のすべての関連付けを削除し、プロセス内のターゲット ドキュメントを孤立します。
-
置換(置換)=多数
関連付け内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。
-
スコープが設定されていない = Criteria
デフォルトのスコープが適用されていないドキュメントの基準を取得します。
Classメソッドに含まれるメソッド
Mongoid:::関連付け::参照::HasMany::Proxyから継承されたメソッド
#delete_all 、 #delete_all 、各、 #exists 、 #find 、 #initiate
Mongoid::関連付け::参照::HasMany::Proxy::Classメソッドs
多くから継承されたメソッド
#空白? 、 #create 、#create 、 #create 、 #find_or_create_by 、 #find_or_create_by. 、 #find_or_initialize_by 、 #nil? 、 # response_toか。 、 #scoped 、 #serialize_hash
プロキシから継承されたメソッド
apply_ordering 、 #extend_proxies 、#initialize 、# klas 、# reset_unloaded 、 #置換可能
マーシャリング可能なに含まれるメソッド
コンストラクターの詳細
このクラスは、 Mongoid::関連付け::参照::HasMany::Proxyからコンストラクターを継承します。
動的メソッド処理
このクラスは、 クラス Mongoid::関連付け::参照::HasMany::Proxy クラスのメソッド _欠落 メソッドを介して動的メソッドを処理します。
インスタンス メソッドの詳細
# を プッシュ する
ドキュメントまたはドキュメントの配列を関連付けに追加します。 プロセス内で親を設定し、インデックスを更新します。
rust メトリクス/ABCSize
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行58 デフォルト <(*args) docs = args.平面 return concat(docs) 場合 docs.サイズ > 1 場合 (doc = docs.最初に) 追加(doc) 行う # の外部キーの値の変更を無視します。 このコード ブロックでは 2 つの理由で、change_attributes がハッシュされます。 # # 1 ) add_to_set メソッドは、外部の 値を削除します。 Changed_attributes ハッシュの#キー、ただしこの値を入力した場合 # メソッドで、外部キーの値を に指定します。 変更された_attributes ハッシュ、次にそれを外部に存在させる必要があります このメソッドも同様です。 同期可能なファイルの後半で使用されます 逆の外部キーを設定するための # モジュール。 # 2 )reset_unloaded メソッドは外部の の値にアクセスします。 _base の # キー(これは に追加されます) # Changed_attributes ハッシュ。 これは読み取り時に発生します 「サイズ変更可能な」属性の場合、自動的に追加されます。 # Changed_attributes ハッシュ。 これは外部にのみ当てはまります 他の関連付けとしての HATTM 関連付けの # キー値 # は外部キー値に string を使用します。 整合性の確保 他の関連付けでは # に設定されている場合、この追加は無視されます。 変更された_attributes ハッシュ。 これについて詳しくは、 MONGOID- 4843を参照してください。 delete_foreign_key_changes 行う _base.add_to_set(foreign_key => doc.public_send(_関連付け.プライマリ_キー)) doc.保存 場合 field_persistable?(doc) delete_unloaded end end end 非同期(_base, foreign_key) および 自己 end |
ビルド番号のビルド(属性 = {}、タイプ = nil) {|doc| ... } =ドキュメント別名: new
属性から新しいドキュメントを作成し、保存せずにこの関連付けに追加します。
123 124 125 126 127 128 129 130 131 132 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行123 デフォルト 構築(属性 = {}, タイプ = nil) doc = 工場.execution_Build(タイプ || klass, 属性, execution_colbacks: false) 追加(doc) doc.apply_post_processed_defaults _base.public_send(foreign_key).プッシュ(doc.public_send(_関連付け.プライマリ_キー)) 非同期(doc, inverse_foreign_key) ノードの数(doc) 場合 ブロック_指定 doc.run_pending_shellbacks doc end |
#concat(documents) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。 ドキュメントを 1 つずつ保持するのではなく、バッチ挿入を実行します。
105 106 107 108 109 110 111 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行105 デフォルト concat(ドキュメント) ids, docs, inserts = {}, [], [] ドキュメント.各 { |doc| append_document(doc, ids, docs, inserts) } _base.プッシュ(foreign_key => ids.キー) 場合 永続的かどうか || _creation? exists_Delayed(docs, inserts) 自己 end |
# delete (ドキュメント) =ドキュメント別名: delete_one
関連付けからドキュメントを削除します。 これにより、ドキュメントの外部キーが nil に設定されます。 If the dependent options on the association are :delete_all or :destroy the appropriate removal will occur.
146 147 148 149 150 151 152 153 154 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行146 デフォルト 削除(ドキュメント) doc = スーパー 場合 doc & & 永続的かどうか _base.プル(foreign_key => doc.public_send(_関連付け.プライマリ_キー)) _ target._unloaded = 条件 非同期(_base, foreign_key) end doc end |
#nullify (置換= [])= nullify_all 、 client 、 parage と も呼ばれる オブジェクト
外部キーと参照を削除して、ベース ドキュメントとターゲット ドキュメント間のすべての関連付けを削除し、プロセス内のターゲット ドキュメントを孤立します。
168 169 170 171 172 173 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行168 デフォルト nullify(replacement = []) _ target.各 { |doc| execution_colback :Before_remove, doc } dirty_inverse_for(replacement) ただし、 _関連付け.forced_nil_inverse? _base.セット(foreign_key => _base.public_send(foreign_key).クリア) 場合 永続的かどうか clear_ target_for_nullify end |
置換(置換)=多数
関連付け内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。 新しいターゲットが nil の場合は、必要な削除を実行します。
people.preferences.submit([ new_post ])
189 190 191 192 193 194 195 196 197 198 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行189 デフォルト replacement(replacement) 消去(replacement) 場合 replacement.blank? delete_unloaded clear_foreign_key_changes else プッシュ(replacement.compact.一意) end 自己 end |
スコープ が設定されていない = Criteria
デフォルトのスコープが適用されていないドキュメントの基準を取得します。
207 208 209 |
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行207 デフォルト スコープが設定されていない klass.スコープが設定されていない.any_in(_id: _base.public_send(foreign_key)) end |