モジュール: Mongoid::Fields
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- 構成可能
- 定義:
- lib/mongoid/fields.rb 、
lib/mongoid/fields/standard.rb、
lib/mongoid/fields/encrypted.rb、
lib/mongoid/fields/localized.rb、
lib/mongoid/fields/foreign_key.rb、
lib/mongoid/fields/validator/macro.rb
Overview
このモジュールは、 フィールドの動作を定義します。
名前空間で定義済み
Modules: クラスメソッド 、 バリデータ クラス: 暗号化 、 foreignKey 、 Localized 、 Standard
定数の概要の削減
- StringdSymbol =
Mongoid::StringedSymbol
- ブール値 =
Mongoid::ブール値
- Type_MAPPINGS =
シンボルで定義されたフィールドには、正しい クラスを使用します。
{ 配列: 配列, long_decimal: BillAtlas, バイナリ: BSON::バイナリ, ブール値: Mongoid::ブール値, date: 日付, date_time: 日時, float: Float, ハッシュ: ハッシュ, 整数: 整数, object_id: BSON::ObjectId, 範囲: Range(範囲), regexp: Regexp, set: セット, string: 文字列, stringized_symbol: StringedSymbol, 記号: シンボル, time: 時間 }.with_in distinct_access
- IDS =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
ドキュメント内の _id フィールドのすべての名前の定数。
これには、 _id フィールドのエイリアスは含まれません。
[ :_id, '_id', ].freeze
- INVALID_BSON_CLASSES =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
フィールド型としてサポートされていない BSON クラス
[ BSON::Decimal128, BSON::Int32, BSON::Int64 ].freeze
- TTransactionS_SFO =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
生成された変換フィールドのサフィックス。
'_translations'
クラスメソッドの概要を折りたたむ
-
。 database_field_name (名前、関係、エイリアス_フィールド、エイリアス関連付け)=string
private
データベースに保存されている指定されたフィールドの名前を取得します。
-
。オプション(option_name、 &Block) = オブジェクト
指定されたオプション名がフィールドに定義されているときに実行するように指定されたブロックを保存します。
-
.options ⇒ Hash
カスタム オプション名のマップをそれらのハンドラーに返します。
-
。走査_関連付け_ツリー(キー、フィールド、関連付け、エイリアス_関連付け){{|The, , のように... } = フィールド
private
関連付けツリーを下中、指定されたキーの フィールドを検索します。
インスタンス メソッドの概要を折りたたむ
-
# apply_default (name) = オブジェクト
指定された名前に対して単一のデフォルト値を適用します。
-
# apply_defaults =オブジェクト
すべてのデフォルトを一度に適用します。
-
# apply_post_processed_defaults = <String>配列=string=string===============================
プロシージャである ドキュメントに、すべてのデフォルト値を適用します。
-
#apply_pre_processed_defaults ⇒ Array<String>
プロシージャではないすべてのデフォルト値をドキュメントに適用します。
-
#Atlas App Services の<String>
このオブジェクトで使用可能な属性の名前の配列を返します。
-
# database_field_name (名前) = string
データベースに保存されている指定されたフィールドの名前を取得します。
-
#dot_dollar_field (name) = true | false
private
このフィールドはドル記号($)で始まる、ドットまたはピリオド(.)を含むか?
-
Atlas_settable? (フィールド、値) = true | false
提供されたフィールドは遅延評価でありますか?
-
では、_object_ids を使用しますか。 = true | false
ドキュメントはオブジェクト ID を使用していますか?
-
# validate_writeable_field_name (name) = オブジェクト
private
フィールドがドル記号($)で始まる、ドット/ピリオド(.)を含むかどうかを検証します。
クラスメソッドの詳細
。 database_field_name (名前、関係、エイリアス_フィールド、エイリアス関連付け)= string
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
データベースに保存されている指定されたフィールドの名前を取得します。 フィールドがエイリアスかどうかを判断するために使用されます。 期間 で区切られた埋め込みドキュメントとフィールドのエイリアスを再帰的に検索します。文字の。
このメソッドは データベースに保存されている関連付けの名前を返しますが、「関係」 はコード内エイリアスを使用していることに注意してください。 関係ハッシュでメンバーシップを確認するには、まず、 エイリアス ハッシュでこのメソッドから返された string を検索する必要があります。
このメソッドでは、最後のアイテムではない include_to 関連付けのエイリアスは展開されません。 たとえば、 _many の生徒が いて、渡されたフィールド名が(生徒の観点から)であった場合、次のようになります。
school._id
include_to 関連付けのエイリアスは、その関連付けの _id フィールドです。 したがって、この関連付けを展開すると次のようになります。
school_id._id
_id フィールドのプロパティを取得することが目的ではなかったため、これは正しいフィールド名ではありません。 参照先のドキュメントのプロパティを取得することが目的でした。 したがって、渡された名前の一部が名前の最後の部分ではない include_to 関連付けである場合は、そのエイリアスは展開されず、次が返されます。
school._id
include_to 関連付けが名前の最後の部分である場合、_id フィールドが渡されます。
415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 |
# ファイル 'lib/mongoid/fields.rb' 行415 デフォルト database_field_name(name, 関係, analyzed_fields, alased_ associateds) return " " ただし、 name.存在するかどうか キー = name.to_s セグメント, 残り = キー.分裂('.', 2) # が include_to 関連付けの場合、フィールドのエイリアスを取得しないでください は、最後の項目ではありません。 したがって、次のいずれかの場合にエイリアスを取得してください 次の条件が true です。 # 1 。 This is the last item, i.e. there is no remaining. # 2 。 関連付けではありません。 # 3 。 属の関連付けではありません 場合 !残り || !関係.key?(セグメント) || !関係[セグメント].is_a?(関連付け::参照済み::BelongsTo) セグメント = analyzed_fields[セグメント]&.dup || セグメント end return セグメント ただし、 残り 関係 = 関係[alased_ associateds[セグメント] || セグメント] 場合 関係 k = 関係.klass " #{セグメント} 。 #{ database_field_name (残りの、 k .関係、 k . alased_fields 、 k .は .のエイリアス関連付け) } " else " #{セグメント} 。 #{残りの} " end end |
。オプション(option_name、 &Block) =オブジェクト
指定されたオプション名がフィールドに定義されているときに実行するように指定されたブロックを保存します。
ハンドラーが実行する機能に関する前提は作成されていないため、フィールド定義で 'option_name' キーが指定されている場合は、false や nil であっても常に呼び出されます。
298 299 300 |
# ファイル 'lib/mongoid/fields.rb' 行298 デフォルト オプション(options_name, &ブロック) [options_name] = ブロック end |
.options ⇒ Hash
カスタム オプション名のマップをそれらのハンドラーに返します。
309 310 311 |
# ファイル 'lib/mongoid/fields.rb' 行309 デフォルト @options ||= {} end |
。走査_関連付け_ツリー(キー、フィールド、関連付け、エイリアス_関連付け){{|The, , のように... } =フィールド
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
関連付けツリーを下中、指定されたキーの フィールドを検索します。 それには、キーを で分割します。キーの各部分(メソッド)に対して および を返します。
-
メソッドがフィールドの場合、 はメソッド、フィールド、および is_field を true として返します。
-
メソッドが関連付けである場合、klas を関連付けの klass に更新し、method、klas、および is_field が false として返されます。
次の反復では、klas のフィールドと関連付けを使用してツリーの走査を続行します。
340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 |
# ファイル 'lib/mongoid/fields.rb' 行340 デフォルト 走査_関連付け_ツリー(キー, フィールド, 関連付け, alased_ associateds) klass = nil フィールド = nil キー.分裂('.').each_with_index 行う |メソッド, i| fs = i == 0 ? フィールド : klass&.フィールド rs = i == 0 ? 関連付け : klass&.関係 as = i == 0 ? alased_ associateds : klass&.alased_ associateds 関連付けには、名前とエイリアスを持つ 2 つの「キー」を設定できます。 # フィールド名は、クラスの関係に保存するために使用されます と のフィールド ハッシュ、および エイリアスはそのフィールドの保存に使用されるもの データベース内の #。 この関数に入力されるキーは、次のエイリアスです: # キー。 次を調べることで、それらを名前に戻すことができます: # エイリアス ハッシュ。 エイリアス = メソッド 場合 as & & a = as.fetch(メソッド, nil) エイリアス = a.to_s end フィールド = nil klass = nil 場合 fs & & f = fs[エイリアス] フィールド = f ノードの数(メソッド, f, true) 場合 ブロック_指定 elsif rs & & リリース = rs[エイリアス] klass = リリース.klass ノードの数(メソッド, リリース, false) 場合 ブロック_指定 else ノードの数(メソッド, nil, false) 場合 ブロック_指定 end end フィールド end |
インスタンス メソッドの詳細
# apply_default (name) =オブジェクト
指定された名前に対して単一のデフォルト値を適用します。
183 184 185 186 187 188 189 190 191 192 193 |
# ファイル 'lib/mongoid/fields.rb' 行183 デフォルト apply_default(name) ただし、 属性.key?(name) 場合 フィールド = フィールド[name] default = フィールド.eval_default(自己) ただし、 default.nil? || フィールド.lazy? Atlas の 変更点(name) 属性[name] = default end end end end |
# apply_defaults =オブジェクト
すべてのデフォルトを一度に適用します。
199 200 201 202 203 |
# ファイル 'lib/mongoid/fields.rb' 行199 デフォルト apply_defaults Pending_colbacks.削除(:apply_defaults) apply_pre_processed_defaults apply_post_processed_defaults end |
# apply_post_processed_defaults = 配列 =string=string===============================<String>
プロシージャである ドキュメントに、すべてのデフォルト値を適用します。
170 171 172 173 174 175 |
# ファイル 'lib/mongoid/fields.rb' 行170 デフォルト apply_post_processed_defaults Pending_colbacks.削除(:apply_post_processed_defaults) post_processed_defaults.各 行う |name| apply_default(name) end end |
#apply_pre_processed_defaults ⇒ Array<String>
プロシージャではないすべてのデフォルト値をドキュメントに適用します。
158 159 160 161 162 |
# ファイル 'lib/mongoid/fields.rb' 行158 デフォルト apply_pre_processed_defaults pre_processed_defaults.各 行う |name| apply_default(name) end end |
#Atlas App<String> Services の
このオブジェクトで使用可能な属性の名前の配列を返します。
ORM に依存しない方法でフィールド名を提供します。 Rails v 3.1 + はこのメソッドを使用して、JSON リクエストでパラメータを自動的にラップします。
214 215 216 |
# ファイル 'lib/mongoid/fields.rb' 行214 デフォルト Atlas App Services 自己.クラス.Atlas App Services end |
# database_field_name (名前) = string
データベースに保存されている指定されたフィールドの名前を取得します。 フィールドがエイリアスかどうかを判断するために使用されます。
227 228 229 |
# ファイル 'lib/mongoid/fields.rb' 行227 デフォルト database_field_name(name) 自己.クラス.database_field_name(name) end |
#dot_dollar_field (name) = true | false
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このフィールドはドル記号($)で始まる、ドットまたはピリオド(.)を含むか?
263 264 265 266 |
# ファイル 'lib/mongoid/fields.rb' 行263 デフォルト dot_dllar_field?(name) n = analyzed_fields[name] || name フィールド.key?(n) & & (n.include?('.') || n.start_with?('$')) end |
Atlas_settable? (フィールド、値) = true | false
提供されたフィールドは遅延評価か?
240 241 242 |
# ファイル 'lib/mongoid/fields.rb' 行240 デフォルト dirty_settable?(フィールド, 価値) !frozen? & & 価値.nil? & & フィールド.lazy? end |
では、_object_ids を使用しますか。 = true | false
クラス ロード パフォーマンスのためにdelete を使用することでリファクタリングが行われます。
ドキュメントはオブジェクト ID を使用していますか?
252 253 254 |
# ファイル 'lib/mongoid/fields.rb' 行252 デフォルト using_object_ids? 自己.クラス.using_object_ids? end |
# validate_writeable_field_name (name) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
フィールドがドル記号($)で始まる、ドット/ピリオド(.)を含むかどうかを検証します。
276 277 278 279 280 |
# ファイル 'lib/mongoid/fields.rb' 行276 デフォルト validate_writeable_field_name。(name) 場合 dot_dllar_field?(name) 発生 Errors::InvalidDotDollarAssignment.新着情報(自己.クラス, name) end end |