我有一个帖子模型,通过标记有很多标签。 让我们说:
@posts = Post.followed_by(@user)
我想获得@posts的所有标签。
我可以用以下的方式做到:
@posts.each do |post|
@tags << post.tags
end
我怎样才能以更有效的方式做到这一点?
答案 0 :(得分:2)
试试这个:
Tag.joins(:taggings).where(taggings: {post_id: @posts.map(&:id)})
如果@posts
是关系(不是数组),则可以简化查询:
Tag.joins(:taggings).where(taggings: {post_id: @posts})