モジュール: Mongoid::関連付け::参照::AutoSave

次による拡張機能。
ActiveSupport::Concern
次のドキュメントに含まれます。
Mongoid::関連付け
定義:
lib/mongoid/関連付け/referenced/auto_save.rb

Overview

Mongoid::Document に含まれる混合モジュールで、対象ドキュメントの保存時に参照された関連付け内の反対側のドキュメントを自動的に保存する機能が追加されます。

クラスメソッドの概要を折りたたむ

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

クラスメソッドの詳細

定義_自動保存。 (関連付け) =クラス

関連付けられたオブジェクトの関連付けの所有クラスで、 オート保存 メソッドを定義します。

例:

自動保存方法を定義します。

Association::Referenced::Autosave.define_autosave!(association)

パラメーター:

次の値を返します。

  • クラス

    関連付けの 所有者クラス。



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

関連する 自動保存 を開始します。

例:

Begin autosave.

document.__autosaving__


26
27
28
29
30
31
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 26行

デフォルト __autosaving__
  スレッド.begin_autosave(自己)
  ノードの数
保証する
  スレッド.exit_autosave(自己)
end

自動保存の数= true | false

関連するオート保存における無限ループを防ぐために使用されます。

例:

ドキュメントは自動保存されていますか?

document.autosaved?

次の値を返します。

  • 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 を持っている場合)。

パラメーター:

  • doc ドキュメント

    チェックするドキュメント。

  • 認識された を設定する) (デフォルトは Set.new

    すでに訪問されたドキュメント(サイクル 監視)。

次の値を返します。

  • true | false

    documentの自動保存が必要かどうか。



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