我有以下型號。在Ruby on Rails中,如何使多態模型與名稱空間模型相關聯?
# 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自動保存與命名空間模型。
我見過on Rails的網站的幾個建議這樣做這樣的事情:
belongs_to :from, :polymorphic => true, :class_name => "Domain::DomainObject"
然而,這似乎並沒有擦出火花。
那麼,有沒有更好的方法來做到這一點?或者這不被支持?