【问题标题】:Rails 4 activerecord polymorphic many-to-manyRails 4 activerecord多态多对多
【发布时间】:2015-02-21 15:01:44
【问题描述】:

我有一个活动模型,以及组和个人模型。

这些目前没有以任何方式关联,但我正在研究如何在 Active Record 中设置必要的关联。

一项活动将有许多参与者,包括团体和个人。一个团体或个人可能会参与许多活动。

看起来多态的 ActivityParticipant 关联可以做到这一点,但它需要在双方都是多对多的。

我可能需要一张有

activity_id 活动参与者类型 activity_participant_id

如果有任何关于 activerecord 如何处理这个和关联定义的建议。

提前致谢 丹

【问题讨论】:

    标签: ruby-on-rails-4 rails-activerecord polymorphic-associations


    【解决方案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
    

    我认为这应该可行,无需在任何其他表中添加任何引用。

    【讨论】:

    • Mohammad,感谢您的及时回答,我正在尝试并确认它正在工作。 ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多