Получение всех сообщений с доски, на которую подписан пользователь - PullRequest
0 голосов
/ 06 октября 2018

В настоящее время я настраиваю канал с нуля, когда пользователь подписывается на несколько досок объявлений и получает все сообщения, созданные под этой доской.Вот как у меня написан мой код:

class User < ApplicationRecord
  has_many :subscriptions, dependent: :destroy
  has_many :boards, through: :subscriptions
end

class Subscription < ApplicationRecord
  belongs_to :user
  belongs_to :board
end

class Board < ApplicationRecord
  has_many :subscriptions, dependent: :destroy
  has_many :subscribers, through: :subscriptions, source: :user
end

class Post < ApplicationRecord
  belongs_to :board
  belongs_to :user
end

Когда приходит время отображать посты, у меня возникают проблемы с точки зрения правильного подхода.Будет ли простым решением установить другую ассоциацию HMT в пользовательской модели следующим образом?

has_many :subscribed_posts, through: :boards, source: :posts

В моем подходе есть один непосредственный недостаток, заключающийся в том, что пользователь будет отображать свои сообщения, в том числе других пользователей.,Лучшим решением было бы создать какой-то SQL-запрос?

1 Ответ

0 голосов
/ 07 октября 2018

Да, вы можете создать другую ассоциацию для извлечения нужных вам сообщений, но, как вы упомянули, это также будет возвращать и сообщения пользователей, поэтому вы должны установить некоторые условия, чтобы предотвратить такое поведение.

has_many :subscribed_posts, through: :boards, source: :posts, conditions: {["user_id != ?", id] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...