問題的命名空間: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
通過STI數據庫中的表來實現,pages
。TypeAPage
與PageTemplateA
通過多態關聯相關(pages.pageable_type
是PageTemplateA
當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推斷pageable_type
爲TypeAPage
爲PagesEngine::PageTemplateA
。
如何告訴ActiveRecord不包含名稱空間,並將pageable_type
改爲PageTemplateA
而不是PagesEngine::PageTemplateA
?
感謝您的迴應,安東尼。 但是,在這種情況下,'PageTemplateA'上沒有執行STI。它實際上是在'TypeAPage'上。 – progfan