例外: Mongoid::Errors::UnrecognizedModelAlias
- 継承:
-
MongoidError
- オブジェクト
- 標準エラー
- MongoidError
- Mongoid::Errors::UnrecognizedModelAlias
- 定義:
- lib/mongoid/errors/unrecognized_model_analas.rb
Overview
多形関連付けがクエリされているが、関連付けのタイプを解決できない場合に発生します。 これは通常、データベース内のデータが存在しない型を参照している場合に発生します。
の例については、次のモデルについて考えてみましょう。
class Manager
include Mongoid::Document
belongs_to :unit, polymorphic: true
end
「managers」コレクションに次のようなドキュメントがあるとします。
{ _id: ..., unit_id: ..., unit_type: 'Department::Engineering' }
リファクタリングののある点で、「部門::エンジニアリング」モデルの名前を別の名前に変更すると、Mongoid はこの関連付けのタイプを解決できなくなり、「manager.unit」が必要になります は、この例外を発生させます。
この例外を修正するには、モデルクラスにエイリアスを追加して、名前を変更した後でも見つけられるようにします。
module Engineering
class Department
include Mongoid::Document
identify_as 'Department::Engineering'
# ...
end
end
データベース内のこれらの多形型を識別するには、クラス名ではなく一意の文字列を使用する方がよいでしょう(例: 「部門::エンジニアリング」ではなく「dept」を使用します)。
定数の概要
MongoidErrorから継承された定数
インスタンス属性の概要
MongoidErrorから継承される属性
問題が発生した場合、解決策が与えられたら次の状況が発生します。
インスタンス メソッドの概要を折りたたむ
-
# 初期化 (model_alias) = unrecognizedModelAlias
コンストラクター
UnrecognizedModelAlias の新しいインスタンス。
MongoidErrorから継承されたメソッド
コンストラクターの詳細
# 初期化 (model_alias) = unrecognizedModelAlias
UnrecognizedModelAgent の新しいインスタンスを返します。
43 44 45 46 47 48 49 50 |
# ファイル 'lib/mongoid/errors/unrecognized_model_las.rb' は、43 行を デフォルト 初期化(model_alias) スーパー( ( ' unrecognized_model_lasing ', model_alias: model_alias.検査する ) ) end |