例外: Mongoid::Errors::UnrecognizedModelAlias

継承:
MongoidError
  • オブジェクト
すべて表示
定義:
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::Base_KEY

インスタンス属性の概要

MongoidErrorから継承される属性

問題が発生した場合、解決が与えられたら次の状況が発生します。

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

MongoidErrorから継承されたメソッド

#compose_message

コンストラクターの詳細

# 初期化 (model_alias) = unrecognizedModelAlias

UnrecognizedModelAgent の新しいインスタンスを返します。

[ソースを表示]

43
44
45
46
47
48
49
50
# ファイル 'lib/mongoid/errors/unrecognized_model_las.rb' は、43 行を

デフォルト 初期化(model_alias)
  スーパー(
    compound_message(
      ' unrecognized_model_lasing ',
      model_alias: model_alias.検査する
    )
  )
end