ruby-on-rails – 在Ruby on Rails中,如何使多态模型与命名空间
发布时间:2020-12-17 02:57:32 所属栏目:百科 来源:网络整理
导读:我有以下型号. # app/models/domain/domain_object.rbclass Domain::DomainObject ActiveRecord::Base has_many :links_from,:class_name = "Link",:as = :from,:dependent = :destroyend# app/models/link.rbclass Link ActiveRecord::Base belongs_to :fro
我有以下型号.
# app/models/domain/domain_object.rb class Domain::DomainObject < ActiveRecord::Base has_many :links_from,:class_name => "Link",:as => :from,:dependent => :destroy end # app/models/link.rb class Link < ActiveRecord::Base belongs_to :from,:polymorphic => true belongs_to :object_value,:polymorphic => true end 问题是,当我执行以下操作时,from_type不会将Domain命名空间作为模型的前缀,例如: Domain::DomainObject.all(:include=> :links_from ) 这会导致以下SELECT: SELECT `links`.* FROM `links` WHERE (`links`.`from_id` IN (5,6,12,13,18,24,25,27,29,30,31,32,34,35,39) and `links`.`from_type` = 'DomainObject') 查询应该是: SELECT `links`.* FROM `links` WHERE (`links`.`from_id` IN (5,39) and `links`.`from_type` = 'Domain::DomainObject') 因为Rails会自动使用命名空间保存模型. 我在Rails网站上看到过一些关于这样做的建议: belongs_to :from,:polymorphic => true,:class_name => "Domain::DomainObject" 但是,这似乎也不起作用. 那么,有更好的方法吗?或者这不受支持? 解决方法
为了解决这个问题,我在DomainObject模型中做了一个包含域,并在config / environment.rb中设置了ActiveRecord :: Base.store_full_sti_class = true.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |