我想通过2层has_many关系查询与一个对象相关的所有对象。
假设我们有以下层次结构:博客有很多帖子有很多评论。然后我想所有的评论都与博客。
在我的例子中,我们有:
class Blog < ApplicationRecord
has_many :posts
end
class Post < ApplicationRecord
belongs_to :blog
has_many :comments
end
class Comment < ApplicationRecord
belongs_to :posts
end
我想要一个给定的博客的所有评论的关系。现在,我双重查询
blog = Blog.find(2) # some block instance
Comment.where(post_id: [blog.posts.pluck(:id)])
一定有更好的办法:)
1条答案
按热度按时间baubqpgj1#
您可以添加新的
has_many :through
关联:然后,您将能够:
此外,您现在可以通过Active Record API预加载(
includes
和朋友)记录。更多文档:https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association。