问题的命名空间: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