我目前正在从头开始建立一个供稿,其中用户订阅了多个留言板,并将接收在该留言板下创建的所有帖子。到目前为止,这就是我编写代码的方式:
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查询吗?
答案 0 :(得分:0)
是的,您可以建立另一个关联来检索所需的帖子,但是正如您提到的那样,它也会返回用户的帖子,因此您必须设置一些条件来防止这种行为。
"UUG-AAA-CAC-ACC-GGG-GGG-"