여러분,
이것을 올바르게 이해하고 있는지 확인하고 싶습니다. 그리고 여기서 상속의 경우 (SentientBeing)를 무시하고 대신 has_many : through 관계에서 다형성 모델에 초점을 맞추십시오. 즉, 다음을 고려하십시오.
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
완벽한 세상에서 저는 위젯과 사람이 주어지면 다음과 같이하고 싶습니다.
widget.people << my_person
그러나이 작업을 수행 할 때 'grouper'의 '유형'이 widget_groupings에서 항상 null임을 알았습니다. 그러나 다음과 같은 경우 :
widget.widget_groupings << WidgetGrouping.new({:widget => self, :person => my_person})
그런 다음 모든 것이 일반적으로 예상했던대로 작동합니다. 나는 이것이 다형성이 아닌 연결에서 발생하는 것을 본 적이 없다고 생각하며 이것이이 사용 사례에 특정한 것인지 아니면 잠재적으로 버그를 주시하고 있는지 알고 싶었습니다.
도움을 주셔서 감사합니다!