У меня есть следующие модели.
# 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::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"
Однако, похоже, это тоже не работает.
Итак, есть ли лучший способ сделать это? Или это не поддерживается?