J'ai les modèles suivants.Dans Ruby on Rails, comment associer un modèle polymorphe à un modèle avec espace de noms?
# 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
Le problème est, quand je fais ce qui suit, le préfixe from_type ne pas l'espace de noms de domaine au modèle par exemple
Domain::DomainObject.all(:include=> :links_from)
qui provoque la SELECT suivante:
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')
La requête doit être:
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')
parce que Rails enregistre automatiquement le modèle avec l'espace de noms.
Je l'ai vu quelques recommandations sur les sites Rails faire quelque chose comme ceci:
belongs_to :from, :polymorphic => true, :class_name => "Domain::DomainObject"
Cependant, cela ne semble pas fonctionner non plus.
Alors, y a-t-il une meilleure façon de procéder? Ou n'est-ce pas supporté?