クラス: Mongoid::ModelResolver

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
定義:
lib/mongoid/model_resolver.rb

Overview

弁別キーに基づいてモデル クラスを解決するためのデフォルトクラス。 キーを指定すると、対応する モデルクラスが返されます(存在する場合)。 デフォルトでは 、指定されたキーと一致する名前を持つクラスが検索されますが、追加のマッピングが提供される場合があります。

また、複数のリゾルバをインスタンス化したり、独自のリゾルバをインスタンス化したりすることもできます。これにより、異なるクラスのセットが独立した解決メカニズムを使用できます。

定数の概要の削減

INインスタンス_ミューテックス =

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

を作成するために使用されるミューテックスインスタンス。インスタンス` メソッド スレッドセーフ。

ミューテックス.新着情報

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

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

コンストラクターの詳細

初期化 モデルリゾルバ

新しいModelResolverインスタンスをインスタンス化します。

[ソースを表示]

75
76
77
78
# ファイル 'lib/mongoid/model_resolver.rb' は、75 行

デフォルト 初期化
  @key_to_model = {}
  @model_to_keys = {}
end

クラスメソッドの詳細

。インスタンス= Mongoid::ModelResolver

ModelResolver のデフォルトのインスタンスを返します。

次の値を返します。

[ソースを表示]

27
28
29
# ファイル 'lib/mongoid/model_resolver.rb' は、27 行

デフォルト インスタンス
  @instance ||= INインスタンス_ミューテックス.同期 { @instance ||= 新着情報 }
end

register_resolver(リゾルバ、名前) = オブジェクト

指定されたリゾルバを指定された名前で登録します。

パラメーター:

  • リゾルバ Mongoid::ModelResolver::Interface

    登録するリゾルバ。

  • name ( string | Symbol )

    リゾルバを登録するために使用する識別子。

[ソースを表示]

68
69
70
71
# ファイル 'lib/mongoid/model_resolver.rb' は、68 行

デフォルト register_resolver(リゾルバ, name)
  解決[name.to_sym] = リゾルバ
  自己
end

。リゾルバ( identity_or_object = :デフォルト)= Mongoid::ModelResolver::Interface

引数に対応するリゾルバインスタンスを返します。

パラメーター:

  • identity_or_object nil | true | false Symbol | string | Mongoid::ModelResolver::Interface (デフォルトは :デフォルト)

    nil または false の場合、 は nil を返します。 true または :デフォルトの場合、 はデフォルトのリゾルバに対応します。 その他のシンボルまたは string の場合、 はその識別子を持つ登録済みリゾルバに対応します。 それ以外の場合は、リゾルバインスタンス自体である必要があります。

次の値を返します。

  • Mongoid::ModelResolver::Interface

    指定された引数に対応する リゾルバインスタンス。

次の値が発生します。

  • Mongoid::Errors::UnrecognizedResolver 指定された識別子がシンボルまたは string で、登録されたリゾルバと一致しない場合。

[ソースを表示]

52
53
54
55
56
57
58
59
60
61
62
# ファイル 'lib/mongoid/model_resolver.rb' は、52 行

デフォルト リゾルバ(identity_or_object = :default)
  ケース identity_or_object
  次の場合: nil, false 次に nil
  次の場合: true, :default 次に インスタンス
  次の場合: 文字列, シンボル
    解決.fetch(identity_or_object.to_sym) 行う |キー|
      発生 Mongoid::Errors::UnrecognizedResolver, キー
    end
  else identity_or_object
  end
end

。リゾルバ ~ ハッシュ < Symbol => Mongoid::ModelResolver::Interface>

登録されているリゾルバのマップを返します。 デフォルトのリゾルバはここには含まれていません。

次の値を返します。

  • Hash <Symbol => Mongoid::ModelResolver::Interface>

    シンボル識別子によってマップされたリゾルバ インスタンスのハッシュ。

[ソースを表示]

36
37
38
# ファイル 'lib/mongoid/model_resolver.rb' は、36 行

デフォルト 解決
  @resolvers ||= {}
end

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

# register (klas, *keys) = オブジェクト

指定されたモデルクラスを指定されたキーで登録します。 指定されたキーに加えて、クラス名自体がクラスを識別するキーとして含まれます。 キーは優先順位順位の順に付与され、優先順位度が低いキーが最後に与えられます。 クラス名は明示的に指定されない場合、常に最低優先順位になります。

複数回呼び出された場合、新しいキーは古いキーよりも優先順位が高くなります。 すべての重複キーが削除されます。

パラメーター:

  • klass Mongoid::Document

    登録するドキュメントクラス

  • *keys <String>配列未満

    エイリアスとして使用するキーのリスト(任意)

[ソースを表示]

90
91
92
93
94
95
96
97
98
99
100
101
# ファイル 'lib/mongoid/model_resolver.rb' は、90 行

デフォルト Register(klass, *キー)
  default_key = klass.name

  @model_to_keys[klass] = [ *キー, *@model_to_keys[klass], default_key ].一意
  @key_to_model[default_key] = klass

  キー. 行う |キー|
    @key_to_model[キー] = klass
  end

  自己
end