モジュール: Mongoid::関連付け::参照::AutoSave
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- Mongoid::関連付け
- 定義:
- lib/mongoid/関連付け/referenced/auto_save.rb
Overview
Mongoid::Document に含まれる混合モジュールで、対象ドキュメントの保存時に参照された関連付け内の反対側のドキュメントを自動的に保存する機能が追加されます。
クラスメソッドの概要を折りたたむ
-
。定義_自動保存。 (関連付け) = クラス
関連付けられたオブジェクトの関連付けの所有クラスで、 オート保存 メソッドを定義します。
インスタンス メソッドの概要を折りたたむ
-
#__autosaving__ ⇒ Object
関連する 自動保存 を開始します。
-
自動保存の数= true | false
関連するオート保存における無限ループを防ぐために使用されます。
-
#変更_自動保存?(ドキュメント、確認された = Set.new)= true | false
自動保存の変更があるかどうかを確認します。
クラスメソッドの詳細
。定義_自動保存。 (関連付け) =クラス
関連付けられたオブジェクトの関連付けの所有クラスで、 オート保存 メソッドを定義します。
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 62行 デフォルト 自己.define_autosave!(関連付け) 関連付け.逆_クラス.タップ 行う |klass| Save_method = :"autosave_documents_for_#{関連付け.name}。 klass.送信(:defined_method, Save_method) 行う 場合 以前_呼び出す_停止する必要があるかどうか 自己.Before_colback_hated = false else __autosaving__ 行う 場合 assoc_value = ivar(関連付け.name) 配列(assoc_value).各 行う |doc| 次へ ただし、 Changed_for_autosave?(doc) pc = doc.properties ? doc.duration_context : duration_context.for_field(doc) doc.と共に(pc) 行う |d| d.保存 end end end end end end klass.after_persist_parent Save_method, ただし、 : 自動保存 end end |
インスタンス メソッドの詳細
#__autosaving__ ⇒ Object
関連する 自動保存 を開始します。
26 27 28 29 30 31 |
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 26行 デフォルト __autosaving__ スレッド.begin_autosave(自己) ノードの数 保証する スレッド.exit_autosave(自己) end |
自動保存の数= true | false
関連するオート保存における無限ループを防ぐために使用されます。
18 19 20 |
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 18行 デフォルト 自動保存 スレッド.自動保存(自己) end |
変更_自動保存? (ドキュメント、参照= Set.new)= true | false
自動保存の変更があるかどうかを確認します。documentが新規、変更、または破棄対象としてマークされている場合、または autosave: true によりメモリ内で参照された子が再帰的に同じ条件を満たす場合は true を返します。
認識済みの セットは、オート保存の関連付けがサイクルを形成するときに無限再帰を防止します(たとえば、 autosave: true の値が true である include_to が、ターゲットに autosave: true が存在する has_many を持っている場合)。
46 47 48 49 50 51 |
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 46行 デフォルト Changed_for_autosave?(doc, 認識された = セット.新着情報) return false ただし、 認識された.add?(doc) doc.new_record? || doc.変更されたか || doc.Mark_for_destruction? || autosave_fielden_changed?(doc, 認識された) end |