首页 > 解决方案 > 如何通过 activerecord 以两种不同的方式关联两个模型?

问题描述

我正在制作一个基本的论坛,比如使用 ruby​​ on rails 的应用程序。我有可以创建组的用户。每个用户有_many 个组,每个组都属于一个用户。问题是我还希望一个用户能够订阅很多组,并且组有很多订阅用户。我不知道如何实现这一目标。

这是我希望能够编写的理想代码:

class Group < ApplicationRecord
    #working code
    belongs_to :user
    has_many :subscriptions
    #Non working code
    has_many :subscribed_users, through: :subscriptions
end

class User < ApplicationRecord
    #working code
    has_many :groups
    has_many :subscriptions
    #Non working code
    has_many :subscribed_groups, through: :subscriptions
end

class Subscription < ApplicationRecord
   belongs_to :user
   belongs_to :group
end

标签: ruby-on-rails

解决方案


试试这个:

class Group < ApplicationRecord
  belongs_to :user
  has_many :subscriptions

  has_many :subscribed_users, through: :subscriptions, source: :user
end

class User < ApplicationRecord
  has_many :groups
  has_many :subscriptions

  has_many :subscribed_groups, through: :subscriptions, source: :group
end

class Subscription < ApplicationRecord
  belongs_to :user
  belongs_to :group
end

推荐阅读