我有一个活动模型,以及群组和个人的模型。
目前这些并未以任何方式关联,但我正在研究如何在Active Record中设置必要的关联。
活动将有许多参与者,包括团体和个人。团体或个人可以参加许多活动。
看起来多态的ActivityParticipant关联可能会这样做,但双方需要多对多。
我可能需要一张有
的表格ACTIVITY_ID activity_participant_type activity_participant_id
如果感谢有关activerecord如何处理此关联以及关联定义的任何建议。
提前致谢 丹
答案 0 :(得分:1)
首先是模型
def ActivityParticipant < ActiveRecord::Base
belongs_to :participant, polymorphic: true
belongs_to :activity
end
def Groups < ActiveRecord::Base
has_many :activity_participants, as: :participant
has_many :activities, through: :activity_participants
end
def Individual < ActiveRecord::Base
has_many :activity_participants, as: :participant
has_many :activities, through: :activity_participants
end
至于迁移
def change
create_table :activity_participants do |t|
t.references :participant, polymorphic: true, index: true
t.references :activity
t.timestamps
end
end
至于最终的架构,它将是
# activity_participants
activity_id | participant_type | participant_id
我认为这应该可行,不需要在任何其他表中添加任何引用。