【发布时间】:2016-07-24 15:20:03
【问题描述】:
我有两个模型,帖子和标签,它们之间是多对多的关系。我已经用一个由posts.post_id 和tags.tag_id 组成的posts_tags 表实现了这种关系。
我正在尝试获取具有特定标签的所有帖子的活动记录对象。我有这个使用代码:
posts_i_want = []
all = Post.all
all.each do |x|
x.tags.each do |y|
if y.tag == params[:tag]
posts_i_want.push(x.id)
end
end
end
@posts = Post.where(id: posts_i_want)
但从阅读该主题来看,似乎有更好的方法来做到这一点。 类似于:
@posts = Post.joins("INNER JOIN posts_tags ON posts.post_id = posts_tags.post_id INNER JOIN tags ON posts_tags.tag_id = tags.tag_id WHERE tags.tag = #{params[:tag]}")
或
@posts = Post.joins(posts_tags: :tags).where(tag: params[:tag])
但我没有找到正确的工作方式。我希望有 ruby on rails 经验的人可以提出解决方案的样子。谢谢!
附言使用postgresql
【问题讨论】:
标签: ruby-on-rails postgresql join