クラス: Mongoid::関連付け::参照::HasAndBelongsToMany::Proxy

継承:
Mongoid::関連付け::参照::HasMany::Proxy すべて表示
次による拡張機能。
クラスメソッド
定義:
lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb

Overview

has_and_belongs_to_many 関連付けの透過的なプロキシ。 このクラスのインスタンスは、サブジェクト ドキュメントで 関連付け getter メソッドを呼び出すときに返されます。 このクラスは Mongoid::関連付け::Proxy から継承され、そのメソッドのほとんどを関連付けのターゲット、つまりロードする必要があるドキュメントの配列に転送します。

名前空間で定義済み

Modules: クラスメソッド

定数の概要

プロキシから継承された定数

プロキシ::KEEP

インスタンス属性の概要

プロキシから継承された属性

#_association, #_base, #_target

インスタンス メソッドの概要を折りたたむ

Classメソッドに含まれるメソッド

fast_loader埋め込み

Mongoid:::関連付け::参照::HasMany::Proxyから継承されたメソッド

#delete_all#delete_all#exists#find#initiate

Mongoid::関連付け::参照::HasMany::Proxy::Classメソッドs

# Dataer_loader# 埋め込み

多くから継承されたメソッド

#空白?#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#置換可能

マーシャリング可能なに含まれるメソッド

#merger_dump#merger_load

コンストラクターの詳細

このクラスは、 Mongoid::関連付け::参照::HasMany::Proxyからコンストラクターを継承します。

動的メソッド処理

このクラスは、 クラス Mongoid::関連付け::参照::HasMany::Proxy クラスのメソッド _欠落 メソッドを介して動的メソッドを処理します。

インスタンス メソッドの詳細

# を プッシュ する

ドキュメントまたはドキュメントの配列を関連付けに追加します。 プロセス内で親を設定し、インデックスを更新します。

rust メトリクス/ABCSize

例:

ドキュメントを追加します。

person.posts << post

ドキュメントをプッシュします。

person.posts.push(post)

他のドキュメントと連結します。

person.posts.concat([ post_one, post_two ])

パラメーター:

次の値を返します。



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

属性から新しいドキュメントを作成し、保存せずにこの関連付けに追加します。

例:

関連付けに新しいドキュメントを構築します。

person.posts.build(:title => "A new post")

パラメーター:

  • 属性 ハッシュ (デフォルトは{}です)

    新しいドキュメントの 属性。

  • タイプ クラス (デフォルトはnil

    構築する任意のサブクラス。

結果:

  • ドキュメント

次の値を返します。



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 つずつ保持するのではなく、バッチ挿入を実行します。

例:

他のドキュメントと連結します。

person.posts.concat([ post_one, post_two ])

パラメーター:

次の値を返します。



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.

例:

ドキュメントを削除します。

person.posts.delete(post)

パラメーター:

次の値を返します。



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 と も呼ばれる オブジェクト

外部キーと参照を削除して、ベース ドキュメントとターゲット ドキュメント間のすべての関連付けを削除し、プロセス内のターゲット ドキュメントを孤立します。

例:

関連付けを null にします。

person.preferences.nullify

パラメーター:

  • replacement 配列 <ドキュメント> (デフォルトは[]

    置換ドキュメントです。



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

デフォルトのスコープが適用されていないドキュメントの基準を取得します。

例:

スコープが設定されていない条件を取得します。

person.preferences.unscoped

次の値を返します。

  • 基準

    スコープが設定されていない基準。



207
208
209
# ファイル 'lib/mongoid/関連付け/referenced/has_and_belongs_to_many/proxy.rb' の場合は 行207

デフォルト スコープが設定されていない
  klass.スコープが設定されていない.any_in(_id: _base.public_send(foreign_key))
end