モジュール: Mongoid::関連付け::参照::同期可能
- 次のドキュメントに含まれます。
- Mongoid::関連付け
- 定義:
- build/mongoid- 8.1 /lib/mongoid/asaction/referenced/syncable.rb
Overview
このモジュールは、多対多の関連付けの両方で外部キーを同期するための動作を処理します。
名前空間で定義済み
Modules: クラスメソッド
インスタンス メソッドの概要を折りたたむ
-
# _syncable? (関連付け)=true| false
ドキュメントは逆方向で同期できますか。 これは、キーが変更され、関連付けバインディングが実行されていない場合にのみ当てはまります。
-
# _synced =ハッシュ
同期された外部キーを取得します。
-
# _synced? (foreign_key) = true | false
ドキュメントは外部キーのために同期されましたか?
-
"remove_inverse_keys (関連付け)" = オブジェクト
破棄時に逆キーを更新します。
-
# update_inverse_keys (関連付け) = オブジェクト
関連付けの逆キーを更新します。
インスタンス メソッドの詳細
# _syncable? (関連付け)= true| false
ドキュメントは逆方向で同期できますか。 これは、キーが変更され、関連付けバインディングが実行されていない場合にのみ当てはまります。
20 21 22 |
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/referenced/syncable.rb ', 行20 デフォルト _syncable?(関連付け) !_synced?(関連付け.foreign_key) & & 送信(関連付け.foreign_key_check) end |
# _synced =ハッシュ
同期された外部キーを取得します。
30 31 32 |
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/referenced/syncable.rb ', 行30 デフォルト _synced @_synced ||= {} end |
# _synced? (foreign_key) = true | false
ドキュメントは外部キーのために同期されましたか。
42 43 44 |
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/referenced/syncable.rb ', 行42 デフォルト _synced?(foreign_key) !!_synced[foreign_key] end |
"remove_inverse_keys (関連付け)" =オブジェクト
破棄時に逆キーを更新します。
54 55 56 57 58 59 |
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/referenced/syncable.rb ', 行54 デフォルト delete_inverse_keys(関連付け) foreign_keys = 送信(関連付け.foreign_key) ただし、 foreign_keys.nil? || foreign_keys.空の場合 関連付け.条件(自己, foreign_keys).プル(関連付け.inverse_foreign_key => _id) end end |
# update_inverse_keys (関連付け) =オブジェクト
関連付けの逆キーを更新します。
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/referenced/syncable.rb ', 行69 デフォルト 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 ただし、 追加.空の場合 関連付け.条件(自己, 追加)..add_to_set(関連付け.inverse_foreign_key => _id) end ただし、 Subs.空の場合 関連付け.条件(自己, Subs)..プル(関連付け.inverse_foreign_key => _id) end end end |