Как я могу связать две модели двумя различными способами через activerecord? - PullRequest
0 голосов
/ 24 февраля 2020

Я создаю базовый c форум как приложение, использующее ruby на рельсах. У меня есть пользователи, которые могут создавать группы. У каждого пользователя есть несколько групп, и каждая группа принадлежит пользователю. Проблема в том, что я также хочу, чтобы у пользователя была возможность подписаться на множество групп и чтобы у групп было много подписанных пользователей. Я не могу понять, как этого добиться.

Вот идеальный код, который я хотел бы написать:

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

1 Ответ

0 голосов
/ 24 февраля 2020

Попробуйте что-нибудь такое:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...