Amigos
Quiero asegurarme de que entiendo esto correctamente. Y, por favor, ignore el caso de la herencia aquí (SentientBeing), tratando de centrarse en los modelos polimórficos en has_many: a través de relaciones. Dicho esto, considere lo siguiente ...
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
En un mundo perfecto, me gustaría, dado un widget y una persona, hacer algo como:
widget.people << my_person
Sin embargo, cuando hago esto, he notado que el 'tipo' del 'agrupador' siempre es nulo en widget_groupings. Sin embargo, si hago algo como lo siguiente:
widget.widget_groupings << WidgetGrouping.new({:widget => self, :person => my_person})
Entonces todo funciona como normalmente hubiera esperado. No creo que haya visto que esto ocurra con asociaciones no polimórficas y solo quería saber si esto era algo específico para este caso de uso o si potencialmente estoy mirando un error.
¡Gracias por cualquier ayuda!