
# 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 :from,:polymorphic => true belongs_to :object_value,:polymorphic => trueend
问题是,当我执行以下 *** 作时,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. 总结以上是内存溢出为你收集整理的ruby-on-rails – 在Ruby on Rails中,如何使多态模型与命名空间模型相关联?全部内容,希望文章能够帮你解决ruby-on-rails – 在Ruby on Rails中,如何使多态模型与命名空间模型相关联?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)