从用户订阅的板上检索所有帖子

时间:2018-10-06 12:21:05

标签: ruby-on-rails activerecord

我目前正在从头开始建立一个供稿,其中用户订阅了多个留言板,并将接收在该留言板下创建的所有帖子。到目前为止,这就是我编写代码的方式:

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 :(得分:0)

是的,您可以建立另一个关联来检索所需的帖子,但是正如您提到的那样,它也会返回用户的帖子,因此您必须设置一些条件来防止这种行为。

"UUG-AAA-CAC-ACC-GGG-GGG-"