当前位置:  开发笔记 > 编程语言 > 正文

在Ruby on Rails中,如何使多态模型与命名空间模型相关联?

如何解决《在RubyonRails中,如何使多态模型与命名空间模型相关联?》经验,为你挑选了1个好方法。

我有以下型号.

# 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,6,12,13,18,24,25,27,29,30,31,32,34,35,39) and `links`.`from_type` = 'Domain::DomainObject')

因为Rails会自动使用命名空间保存模型.

我在Rails网站上看到过一些关于这样做的建议:

   belongs_to :from, :polymorphic => true, :class_name => "Domain::DomainObject"

但是,这似乎也不起作用.

那么,有更好的方法吗?或者这不受支持?



1> hoyhoy..:

为了解决这个问题,我include DomainDomainObject模型中做了一个并ActiveRecord::Base.store_full_sti_class = true进入了config/environment.rb.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有