0

モデルがレール3.1で名前空間に設定されている場合、多態性関係は機能しません。ここでは例です:中名前空間モデルは多形性では機能しません。回避策が必要です

class Accounting::Request::Check < ActiveRecord::Base 
    has_one :accounting_request, as: :requestable 
end 

class Accounting::Request < ActiveRecord::Base 
    belongs_to :requestable, polymorphic: true 
end 


cr = Accounting::Request::Check.create!() 
cr.create_accounting_request 

結果:

NameError: uninitialized constant Accounting::Request::Check::AccountingRequest 

私の質問は、私たちは5をレールに移行する前に、当分の間、これを回避する方法、ありますか?

One solution私はclass_name: ':: ClassName'を追加しましたが、これは私のためには機能しません。

答えて

0

はい、レールが名前空間モデルの多型をサポートしています...ここで

はそれを動作可能改訂コードです:

class Accounting::Request < ActiveRecord::Base 
    belongs_to :requestable, polymorphic: true 
end 

class Accounting::CheckRequest < ActiveRecord::Base 
    has_one :accounting_request, as: :requestable, class_name: 'Accounting::Request' 
end 

class_nameは「-able」モデルにする必要があり、 belongs_toを含むクラスを完全に指定する必要があります。

また、has_manyの代わりにhas_oneを使用しています。

関連する問題