Gens,
Je veux m'assurer de bien comprendre cela. Et s'il vous plaît, ignorez le cas de l'héritage ici (SentientBeing), en essayant de vous concentrer sur les modèles polymorphes dans has_many: through relations. Cela dit, considérez ce qui suit ...
class Widget < ActiveRecord::Base
has_many :widget_groupings
has_many :people, :through => :widget_groupings, :source => :person, :conditions => "widget_groupings.grouper_type = 'Person'"
has_many :aliens, :through => :widget_groupings, :source => :alien, :conditions => "video_groupings.grouper_type = 'Alien'"
end
class Person < ActiveRecord::Base
has_many :widget_groupings, :as => grouper
has_many :widgets, :through => :widget_groupings
end
class Alien < ActiveRecord::Base
has_many :widget_groupings, :as => grouper
has_many :widgets, :through => :widget_groupings
end
class WidgetGrouping < ActiveRecord::Base
belongs_to :widget
belongs_to :grouper, :polymorphic => true
end
Dans un monde parfait, j'aimerais, étant donné un widget et une personne, faire quelque chose comme:
widget.people << my_person
Cependant, lorsque je fais cela, j'ai remarqué que le «type» du «mérou» est toujours nul dans widget_groupings. Cependant, si je fais quelque chose comme ce qui suit:
widget.widget_groupings << WidgetGrouping.new({:widget => self, :person => my_person})
Ensuite, tout fonctionne comme je l'aurais normalement prévu. Je ne pense pas avoir jamais vu cela se produire avec des associations non polymorphes et je voulais juste savoir si c'était quelque chose de spécifique à ce cas d'utilisation ou si je suis potentiellement en train de regarder un bogue.
Merci pour toute aide!