use*_*826 -1 activerecord ruby-on-rails ruby-on-rails-4
我有一个Post和Tag模型通过Tagging模型加入has_many :through
我params[:tag_ids]从我的表单传入,我正在尝试获取所有标记有所有标记的帖子(不仅仅是标记中的任何一个).
我正在尝试以下方法:
@ftags = params[:tags_ids]
@objArray = Array.new
@ftags.each do |tag|
@array = Tagging.where("tag_id=#{tag}")
@objArray.push @array
end
Run Code Online (Sandbox Code Playgroud)
...现在我想做的是以某种方式组合这些查询以获得正确的帖子.在我只有两个查询之前,我曾经和merge命令结合使用,如下所示:
@result = @query1.merge(@query2)
Run Code Online (Sandbox Code Playgroud)
...但是现在我有一些动态的查询,我仍然希望最终将它们组合起来.如何在特定列的特定值的循环内进行合并?
您有一个标记ID列表,并希望查找包含所有这些标记的所有帖子:
# contains [1, 2, 3]
tag_ids = params[:tag_ids]
Post.joins(:taggings)
.where(taggings: { tag: tag_ids })
.group('posts.id')
.having("count(taggings.id) = #{tag_ids.length}")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |