質問の名前空間が含まれていますActiveRecordのモデル「タイプ」列には、関連するモデル
関連型の列を照会/格納しながら、私は関連クラスの名前空間を含まないためにはActiveRecordを伝えることができますどのように?
物事の現在の状態:
は、以下のクラス定義を考えてみましょう:
class PageTemplateA < ActiveRecord::Base
has_many :type_a_pages, :as => :pageable, :class_name => 'TypeAPage', :inverse_of => :pageable
end
##### The following class is implemented through STI.
class TypeAPage < Page
belongs_to :pageable, :class_name => 'PageTemplateA', :inverse_of => :type_a_page
end
class Page < ActiveRecord::Base
belongs_to :pageable, :polymorphic => true
end
要約すると:
TypeAPage
をpages
、データベーステーブルにSTIを介して実装されます。TypeAPage
私が作りたいの変化多型会合を介しPageTemplateA
に関連付けられている(PageTemplateA
に関連付けられているときpages.pageable_type
がPageTemplateA
ある)
されています。私はに上記のすべてのモデルを移動したい
を新しい名前空間、たとえば、PagesEngine
、PageTemplateA
の私の定義は次のようになります:
module PagesEngine
class PageTemplateA < ActiveRecord::Base
has_many :type_a_pages, :as => :pageable, :class_name => 'TypeAPage', :inverse_of => :pageable
end
end
を除き、ActiveRecordはTypeAPage
のpageable_type
をPagesEngine::PageTemplateA
と解釈します。
ActiveRecordに名前空間を含めないように指示するには、PagesEngine::PageTemplateA
ではなくPageTemplateA
にpageable_type
を解決しますか?
あなたのお返事ありがとうございます、アンソニー。 しかし、この場合、 'PageTemplateA'に実装されたSTIはありません。これは実際には 'TypeAPage'にあります。 – progfan