Pessoal,
Quero ter certeza de que entendi isso corretamente. E, por favor, desconsidere o caso de herança aqui (SentientBeing), tentando se concentrar em modelos polimórficos em has_many: por meio de relacionamentos. Dito isso, considere o seguinte ...
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
Em um mundo perfeito, gostaria de, com um widget e uma pessoa, fazer algo como:
widget.people << my_person
No entanto, quando faço isso, percebi que o 'tipo' de 'garoupa' é sempre nulo em widget_groupings. No entanto, se eu quiser algo como o seguinte:
widget.widget_groupings << WidgetGrouping.new({:widget => self, :person => my_person})
Então tudo funciona como eu normalmente esperava. Acho que nunca vi isso ocorrer com associações não polimórficas e só queria saber se isso era algo específico para este caso de uso ou se estou potencialmente diante de um bug.
Obrigado por qualquer ajuda!