モジュール: Mongoid::Fields
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- 構成可能
- 定義:
- build/mongoid- 8.1 /lib/mongoid/fields.rb 、
build/mongoid- 8.1 /lib/mongoid/fields/standard.rb,
build/mongoid- 8.1 /lib/mongoid/fields/localized.rb,
build/mongoid- 8.1 /lib/mongoid/fields/foreign_key.rb,
build/mongoid- 8 . 1 /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
クラスメソッドの概要を折りたたむ
-
。 database_field_name (名前、関係、エイリアス_フィールド、エイリアス関連付け)=string
private
データベースに保存されている指定されたフィールドの名前を取得します。
-
。オプション(option_name、 &Block) = オブジェクト
指定されたオプション名がフィールドに定義されているときに実行するように指定されたブロックを保存します。
-
.options ⇒ Hash
カスタム オプション名のマップをそれらのハンドラーに返します。
-
。走査_関連付け_ツリー(キー、フィールド、関連付け、エイリアス_関連付け)= フィールド
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 フィールドが渡されます。
407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は407行 デフォルト database_field_name(name, 関係, analyzed_fields, alased_ associateds) 場合 Mongoid.broken_alias_handling return nil ただし、 name 正規化された = name.to_s analyzed_fields[正規化された] || 正規化された else return nil ただし、 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 end |
。オプション(option_name、 &Block) =オブジェクト
指定されたオプション名がフィールドに定義されているときに実行するように指定されたブロックを保存します。
ハンドラーが実行する機能に関する前提は作成されていないため、フィールド定義で 'option_name' キーが指定されている場合は、false や nil であっても常に呼び出されます。
292 293 294 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は292行 デフォルト オプション(options_name, &ブロック) [options_name] = ブロック end |
.options ⇒ Hash
カスタム オプション名のマップをそれらのハンドラーに返します。
303 304 305 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は303行 デフォルト @options ||= {} end |
。走査_関連付け_ツリー(キー、フィールド、関連付け、エイリアス_関連付け)=フィールド
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
関連付けツリーを下中、指定されたキーの フィールドを検索します。 それには、キーを で分割します。キーの各部分(メソッド)に対して および を返します。
-
メソッドがフィールドの場合、 はメソッド、フィールド、および is_field を true として返します。
-
メソッドが関連付けである場合、klas を関連付けの klass に更新し、method、klas、および is_field が false として返されます。
次の反復では、klas のフィールドと関連付けを使用してツリーの走査を続行します。
332 333 334 335 336 337 338 339 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 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は332行 デフォルト 走査_関連付け_ツリー(キー, フィールド, 関連付け, 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) =オブジェクト
指定された名前に対して単一のデフォルト値を適用します。
176 177 178 179 180 181 182 183 184 185 186 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は176行 デフォルト apply_default(name) ただし、 属性.key?(name) 場合 フィールド = フィールド[name] default = フィールド.eval_default(自己) ただし、 default.nil? || フィールド.lazy? Atlas の 変更点(name) 属性[name] = default end end end end |
# apply_defaults =オブジェクト
すべてのデフォルトを一度に適用します。
192 193 194 195 196 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は192行 デフォルト apply_defaults Pending_colbacks.削除(:apply_defaults) apply_pre_processed_defaults apply_post_processed_defaults end |
# apply_post_processed_defaults = 配列 =string=string===============================<String>
プロシージャである ドキュメントに、すべてのデフォルト値を適用します。
163 164 165 166 167 168 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は163行 デフォルト 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>
プロシージャではないすべてのデフォルト値をドキュメントに適用します。
151 152 153 154 155 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は151行 デフォルト apply_pre_processed_defaults pre_processed_defaults.各 行う |name| apply_default(name) end end |
#Atlas App<String> Services の
このオブジェクトで使用可能な属性の名前の配列を返します。
ORM に依存しない方法でフィールド名を提供します。 Rails v 3.1 + はこのメソッドを使用して、JSON リクエストでパラメータを自動的にラップします。
207 208 209 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は207行 デフォルト Atlas App Services 自己.クラス.Atlas App Services end |
# database_field_name (名前) = string
データベースに保存されている指定されたフィールドの名前を取得します。 フィールドがエイリアスかどうかを判断するために使用されます。
220 221 222 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は220行 デフォルト database_field_name(name) 自己.クラス.database_field_name(name) end |
#dot_dollar_field (name) = true | false
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このフィールドはドル記号($)で始まる、ドットまたはピリオド(.)を含むか?
256 257 258 259 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は256行 デフォルト dot_dllar_field?(name) n = analyzed_fields[name] || name フィールド.key?(n) & & (n.include?('.') || n.start_with?('$')) end |
Atlas_settable? (フィールド、値) = true | false
提供されたフィールドは遅延評価か?
233 234 235 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は233行 デフォルト dirty_settable?(フィールド, 価値) !frozen? & & 価値.nil? & & フィールド.lazy? end |
では、_object_ids を使用しますか。 = true | false
クラス ロード パフォーマンスのためにdelete を使用することでリファクタリングが行われます。
ドキュメントはオブジェクト ID を使用していますか?
245 246 247 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は245行 デフォルト using_object_ids? 自己.クラス.using_object_ids? end |
# validate_writeable_field_name (name) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
フィールドがドル記号($)で始まる、ドット/ピリオド(.)を含むかどうかを検証します。
269 270 271 272 273 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/fields.rb ' の場合は269行 デフォルト validate_writeable_field_name。(name) 場合 dot_dllar_field?(name) 発生 Errors::InvalidDotDollarAssignment.新着情報(自己.クラス, name) end end |