モジュール: Mongoid::Attributes::Dyname

次による拡張機能。
ActiveSupport::Concern
定義:
build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb

Overview

このモジュールには、動的属性の動作が含まれています。

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

動的メソッド処理

このクラスはメソッド_欠落メソッドを通じて動的メソッドを処理します

#メソッド_欠落(name, *args) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

動的属性のアクセス メソッドを許可するために使用されます。

例:

Method_Missing 経由で を呼び出す。

document.method_missing(:test)

パラメーター:

  • name ( string | Symbol )

    メソッドの名前。

  • *args オブジェクト...

    メソッドへの引数。

次の値を返します。

  • オブジェクト

    メソッド呼び出しの結果。



121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行121

デフォルト メソッド_欠落(name, *args)
  attr = name.to_s
  return スーパー ただし、 属性.has_keys_keys(attr.リーダー)
  場合 attr.ライター
    getter = attr.リーダー
    定義_動的_ライター(getter)
    write_attribute(getter, args.最初に)
  elsif attr.以前_type_ Cast?
    定義_動的_事前_タイプ_キャスト_読み取り(attr.リーダー)
    Atlas の 変更点(attr.リーダー)
    read_attribute_Before_type_ Cast(attr.リーダー)
  else
    getter = attr.リーダー
    定義_動的_読み取り(getter)
    Atlas の 変更点(attr.リーダー)
    read_raw_attribute(getter)
  end
end

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

#defined_dy値_Before_type_ Cast_reader (name) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

型キャストされる前に、動的属性のリーダー メソッドを定義します。

例:

属性のリーダー メソッドを定義します。

model.define_dynamic_before_type_cast_reader(:field)

パラメーター:

  • name ( string )

    フィールドの名前。



53
54
55
56
57
58
59
60
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行53

デフォルト 定義_動的_事前_タイプ_キャスト_読み取り(name)
  Class_eval 行う
    refine_method(" #{ name } _Before_type_ Cast ") 行う
      Atlas の 変更点(name)
      read_attribute_Before_type_ Cast(name)
    end
  end
end

#defined_dynamic_reader (name) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

動的属性のリーダー メソッドを定義します。

例:

リーダー メソッドを定義します。

model.define_dynamic_reader(:field)

パラメーター:

  • name ( string )

    フィールドの名前。



34
35
36
37
38
39
40
41
42
43
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行34

デフォルト 定義_動的_読み取り(name)
  return ただし、 name.valid_method_name?

  Class_eval 行う
    refine_method(name) 行う
      Atlas の 変更点(name)
      read_raw_attribute(name)
    end
  end
end

#defined_dynamic_writer (name) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

動的属性のライター メソッドを定義します。

例:

書込みメソッドを定義します。

model.define_dynamic_writer(:field)

パラメーター:

  • name ( string )

    フィールドの名前。



70
71
72
73
74
75
76
77
78
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行70

デフォルト 定義_動的_ライター(name)
  return ただし、 name.valid_method_name?

  Class_eval 行う
    refine_method(" #{ name } = ") 行う |価値|
      write_attribute(name, 価値)
    end
  end
end

analyze_dysync_fields = string

ドキュメントの検査された動的フィールドの配列を取得します。

例:

動的フィールドを調べます。

document.inspect_dynamic_fields

次の値を返します。

  • ( string )

    pretty-printed 動的フィールド値の配列。



103
104
105
106
107
108
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行103

デフォルト explain_dying_fields
  キー = 属性.キー - フィールド.キー - 関係.キー - [" _id ", 自己.クラス.弁別子_キー]
  return キー.map 行う |name|
    " #{ { name } } : # { { Atlas App Services 
  end
end

# Process_attribute (name, 値) =オブジェクト

属性が動的である場合は、オブジェクトタイプを持つそのフィールドを追加し、値を設定します。

例:

属性を処理します。

document.process_attribute(name, value)

パラメーター:

  • name シンボル

    フィールドの名前。

  • 価値 オブジェクト

    フィールドの値。



88
89
90
91
92
93
94
95
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行88

デフォルト process_attribute(name, 価値)
  応答します = respond_to?(" #{ name } = ")
  場合 !応答します
    write_attribute(name, 価値)
  else
    送信(" #{ name } = ", 価値)
  end
end

response_to? (name, include_private = false) = true | false

response_to を上書きしますか 動的属性に適切に応答します。

例:

このオブジェクトは メソッドに応答しますか。

person.respond_to?(:title)

パラメーター:

  • name 配列

    メソッドの名前。

  • include_private true | false (デフォルトはfalse

次の値を返します。

  • true | false

    実行される場合は true、実行されない場合は false。



19
20
21
22
23
24
ファイル 'Build/mongoid- 8.1 /lib/mongoid/attributes/dynamec.rb ', 行19

デフォルト respond_to?(name, include_private = false)
  スーパー || (
    属性 & &
    属性.has_keys_keys(name.to_s.リーダー)
  )
end