モジュール: Mongoid::関連付け::参照::同期可能

次のドキュメントに含まれます。
Mongoid::関連付け
定義:
lib/mongoid/関連付け/referenced/syncable.rb

Overview

このモジュールは、多対多の関連付けの両方で外部キーを同期するための動作を処理します。

名前空間で定義済み

Modules: クラスメソッド

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

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

# _syncable? (関連付け)= true| false

ドキュメントは逆方向で同期できますか。 これは、キーが変更され、関連付けバインディングが実行されていない場合にのみ当てはまります。

例:

外部キーは同期できますか。

document._syncable?(association)

パラメーター:

次の値を返します。

  • true | false

    同期できる場合は、。



21
22
23
# ファイル 'lib/mongoid/asaction/referenced/syncable.rb' の場合、行21

デフォルト _syncable?(関連付け)
  !_synced?(関連付け.foreign_key) & & 送信(関連付け.foreign_key_check)
end

# _synced =ハッシュ

同期された外部キーを取得します。

例:

同期された外部キーを取得します。

document._synced

次の値を返します。

  • ハッシュ

    同期された外部キー。



31
32
33
# ファイル 'lib/mongoid/asaction/referenced/syncable.rb' の場合、行31

デフォルト _synced
  @_synced ||= {}
end

# _synced? (foreign_key) = true | false

ドキュメントは外部キーのために同期されましたか。

例:

ドキュメントは同期されましたか。

document._synced?

パラメーター:

  • foreign_key ( string )

    外部キー。

次の値を返します。

  • true | false

    同期できる場合は、。



43
44
45
# ファイル 'lib/mongoid/asaction/referenced/syncable.rb' の場合、行43

デフォルト _synced?(foreign_key)
  !!_synced[foreign_key]
end

"remove_inverse_keys (関連付け)" =オブジェクト

破棄時に逆キーを更新します。

例:

逆キーを更新します。

document.remove_inverse_keys(association)

パラメーター:

次の値を返します。

  • オブジェクト

    更新された値。



55
56
57
58
59
60
# ファイル 'lib/mongoid/asaction/referenced/syncable.rb' の場合、行55

デフォルト delete_inverse_keys(関連付け)
  foreign_keys = 送信(関連付け.foreign_key)
  ただし、 foreign_keys.nil? || foreign_keys.空の場合
    関連付け.条件(自己, foreign_keys).プル(関連付け.inverse_foreign_key => _id)
  end
end

# update_inverse_keys (関連付け) =オブジェクト

関連付けの逆キーを更新します。

例:

逆キーを更新します

document.update_inverse_keys(association)

パラメーター:

次の値を返します。

  • オブジェクト

    更新された値。



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# ファイル 'lib/mongoid/asaction/referenced/syncable.rb' の場合、行70

デフォルト update_inverse_keys(関連付け)
  場合 used_changes.has_keys_keys(関連付け.foreign_key)
    old, 新着情報 = used_changes[関連付け.foreign_key]
    追加, Subs = 新着情報 - (old || []), (old || []) - 新着情報

    # を自動保存している場合は、重複を追加したくないです -
    $addToSet は以前に実行され、その後 $push と $each が
    オート保存の場合は の逆がこれを発生させます。 から各 ID を削除します
    ID の追加とオブジェクトの追加が混在する場合、メモリ内にあるものは次のようになります
    # が発生しました。
    場合 関連付け.autosave?
      送信(関連付け.name).in_memory. 行う |doc|
        追加.delete_one(doc._id)
      end
    end

    ただし、 追加.空の場合
      関連付け.条件(自己, 追加).without_options.add_to_set(関連付け.inverse_foreign_key => _id)
    end
    ただし、 Subs.空の場合
      関連付け.条件(自己, Subs).without_options.プル(関連付け.inverse_foreign_key => _id)
    end
  end
end