モジュール: 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

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

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

クラスメソッドの詳細

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 フィールドが渡されます。

パラメーター:

  • name ( string | Symbol )

    取得する名前。

  • 関係 ハッシュ

    の関連付け。

  • analyzed_fields ハッシュ

    エイリアスされたフィールド。

  • alased_ associateds ハッシュ

    エイリアスの関連付け。

次の値を返します。

  • ( string )

    データベースに保存されているフィールドの名前。



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
# ファイル 'lib/mongoid/fields.rb' 行410

デフォルト database_field_name(name, 関係, analyzed_fields, alased_ associateds)
  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

オプション(option_name、 &Block) =オブジェクト

指定されたオプション名がフィールドに定義されているときに実行するように指定されたブロックを保存します。

ハンドラーが実行する機能に関する前提は作成されていないため、フィールド定義で 'option_name' キーが指定されている場合は、false や nil であっても常に呼び出されます。

例:

Mongoid::Fields.option :required do |model, field, value|
  model.validates_presence_of field if value
end

パラメーター:

  • options_name シンボル

    照合するオプション名

  • & ブロック

    オプションが指定されたときに実行する ハンドラー 。



293
294
295
# ファイル 'lib/mongoid/fields.rb' 行293

デフォルト オプション(options_name, &ブロック)
  options[options_name] = ブロック
end

.optionsHash

カスタム オプション名のマップをそれらのハンドラーに返します。

例:

Mongoid::Fields.options
# => { :required => #<Proc:0x00000100976b38> }

次の値を返します。

  • ハッシュ

    オプション マップ



304
305
306
# ファイル 'lib/mongoid/fields.rb' 行304

デフォルト options
  @options ||= {}
end

走査_関連付け_ツリー(キー、フィールド、関連付け、エイリアス_関連付け){{|The, , のように... } =フィールド

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

関連付けツリーを下中、指定されたキーの フィールドを検索します。 それには、キーを で分割します。キーの各部分(メソッド)に対して および を返します。

  • メソッドがフィールドの場合、 はメソッド、フィールド、および is_field を true として返します。

  • メソッドが関連付けである場合、klas を関連付けの klass に更新し、method、klas、および is_field が false として返されます。

次の反復では、klas のフィールドと関連付けを使用してツリーの走査を続行します。

パラメーター:

  • キー ( string )

    関連ツリーを検索するために使用されるキー。

  • フィールド ハッシュ

    検索を開始するフィールド。

  • 関連付け ハッシュ

    検索を開始する関連付け。

  • alased_ associateds ハッシュ

    検索を開始するためのアラートの関連付け。

  • & ブロック

    ブロック。

生成パラメータ:

  • この シンボル

    現在の メソッド。

  • この シンボル | string

    フィールドまたは関係。

  • かどうか true | false

    2 番目の中断パラメータは、 フィールドであるか、またはフィールドではない。

次の値を返します。

  • (フィールド)

    検索の最後に指定されたキーに対して見つかったフィールド。 最後に見つかったものが関連付けである場合、または指定されたキーのフィールドが見つからなかった場合は、これは nil を返します。



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
365
366
367
# ファイル 'lib/mongoid/fields.rb' 行335

デフォルト 走査_関連付け_ツリー(キー, フィールド, 関連付け, 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) =オブジェクト

指定された名前に対して単一のデフォルト値を適用します。

例:

単一のデフォルトを適用します。

model.apply_default("name")

パラメーター:

  • name ( string )

    フィールドの名前。



178
179
180
181
182
183
184
185
186
187
188
# ファイル 'lib/mongoid/fields.rb' 行178

デフォルト apply_default(name)
  ただし、 属性.key?(name)
    場合 フィールド = フィールド[name]
      default = フィールド.eval_default(自己)
      ただし、 default.nil? || フィールド.lazy?
        Atlas の 変更点(name)
        属性[name] = default
      end
    end
  end
end

# apply_defaults =オブジェクト

すべてのデフォルトを一度に適用します。

例:

すべてのデフォルトを適用します。

model.apply_defaults


194
195
196
197
198
# ファイル 'lib/mongoid/fields.rb' 行194

デフォルト apply_defaults
  Pending_colbacks.削除(:apply_defaults)
  apply_pre_processed_defaults
  apply_post_processed_defaults
end

# apply_post_processed_defaults = 配列 =string=string===============================<String>

プロシージャである ドキュメントに、すべてのデフォルト値を適用します。

例:

すべてのプロシージャのデフォルトを適用します。

model.apply_post_processed_defaults

次の値を返します。

  • <String>配列未満

    プロシージャの名前のデフォルト。



165
166
167
168
169
170
# ファイル 'lib/mongoid/fields.rb' 行165

デフォルト apply_post_processed_defaults
  Pending_colbacks.削除(:apply_post_processed_defaults)
  post_processed_defaults. 行う |name|
    apply_default(name)
  end
end

#apply_pre_processed_defaultsArray<String>

プロシージャではないすべてのデフォルト値をドキュメントに適用します。

例:

すべての非プロシージャのデフォルトを適用します。

model.apply_pre_processed_defaults

次の値を返します。

  • <String>配列未満

    非プロシージャのデフォルト名。



153
154
155
156
157
# ファイル 'lib/mongoid/fields.rb' 行153

デフォルト apply_pre_processed_defaults
  pre_processed_defaults. 行う |name|
    apply_default(name)
  end
end

#Atlas App<String> Services

このオブジェクトで使用可能な属性の名前の配列を返します。

ORM に依存しない方法でフィールド名を提供します。 Rails v 3.1 + はこのメソッドを使用して、JSON リクエストでパラメータを自動的にラップします。

例:

フィールド名を取得する

document.attribute_names

次の値を返します。

  • <String>配列未満

    フィールド名



209
210
211
# ファイル 'lib/mongoid/fields.rb' 行209

デフォルト Atlas App Services
  自己.クラス.Atlas App Services
end

# database_field_name (名前) = string

データベースに保存されている指定されたフィールドの名前を取得します。 フィールドがエイリアスかどうかを判断するために使用されます。

例:

データベースのフィールド名を取得します。

model.database_field_name(:authorization)

パラメーター:

  • name ( string | Symbol )

    取得する名前。

次の値を返します。

  • ( string )

    db に保存されているフィールドの名前。



222
223
224
# ファイル 'lib/mongoid/fields.rb' 行222

デフォルト database_field_name(name)
  自己.クラス.database_field_name(name)
end

#dot_dollar_field (name) = true | false

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

このフィールドはドル記号($)で始まる、ドットまたはピリオド(.)を含むか?

パラメーター:

  • name ( string )

    フィールド名。

次の値を返します。

  • true | false

    このフィールドがドットまたはドル記号の場合。



258
259
260
261
# ファイル 'lib/mongoid/fields.rb' 行258

デフォルト dot_dllar_field?(name)
  n = analyzed_fields[name] || name
  フィールド.key?(n) & & (n.include?('.') || n.start_with?('$'))
end

Atlas_settable? (フィールド、値) = true | false

提供されたフィールドは遅延評価か?

例:

フィールドが遅延設定可能である場合。

doc.lazy_settable?(field, nil)

パラメーター:

  • フィールド (フィールド)

    フィールド。

  • 価値 オブジェクト

    現在の値。

次の値を返します。

  • true | false

    フィールドを遅延設定する場合。



235
236
237
# ファイル 'lib/mongoid/fields.rb' 行235

デフォルト dirty_settable?(フィールド, 価値)
  !frozen? & & 価値.nil? & & フィールド.lazy?
end

では、_object_ids を使用しますか。 = true | false

注:

クラス ロード パフォーマンスのためにdelete を使用することでリファクタリングが行われます。

ドキュメントはオブジェクト ID を使用していますか?

例:

ドキュメントはオブジェクト ID を使用していますか?

model.using_object_ids?

次の値を返します。

  • true | false

    オブジェクト ID を使用します。



247
248
249
# ファイル 'lib/mongoid/fields.rb' 行247

デフォルト using_object_ids?
  自己.クラス.using_object_ids?
end

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

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

フィールドがドル記号($)で始まる、ドット/ピリオド(.)を含むかどうかを検証します。

パラメーター:

  • name ( string )

    フィールド名。

次の値が発生します。

  • InvalidDotDollarAssignment

    にドットが含まれているか、 または ドルで始まる場合。



271
272
273
274
275
# ファイル 'lib/mongoid/fields.rb' 行271

デフォルト validate_writeable_field_name。(name)
  場合 dot_dllar_field?(name)
    発生 Errors::InvalidDotDollarAssignment.新着情報(自己.クラス, name)
  end
end