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

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

Overview

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

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

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

クラスメソッドの詳細

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

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

例:

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

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

パラメーター:

次の値を返します。

  • クラス

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



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 53行

デフォルト 自己.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|
              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__


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

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

自動保存の数= true | false

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

例:

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

document.autosaved?

次の値を返します。

  • true | false

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



20
21
22
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 20行

デフォルト 自動保存
  スレッド.自動保存(自己)
end

変更_自動保存? (doc) =ブール値

自動保存の変更を確認する

document.changed_for_autosave?

例:

自己または で変更があった場合は true を返します

autosaved associations.

次の値を返します。



40
41
42
# ファイル 'lib/mongoid/関連付け/referenced/auto_save.rb' の場合、 40行

デフォルト Changed_for_autosave?(doc)
  doc.new_record? || doc.変更されたか || doc.Mark_for_destruction?
end