我有HABTM关系的文章和标签记录。
我需要使用"和"过滤标签数组。查询。
对于下面的标签,我需要每一个" Salami"和#34;比萨"已过期。
tags = [" Salami"," Pizza","已过期"] //项目可以是1中的任意数字。 .N
我想出了以下内容,但这会让每一个" Salami"和#34;比萨"哪些都没有过期。这也返回了所有过期的物品,这些物品不是萨拉米香肠也不是披萨
def tags_query
render status: 200, json: Article.includes(:tags).where('tags.name' => params[:tags] )
end
答案 0 :(得分:1)
如果您确实想要使用"和"对于所有标签,您可以这样做:
required_tags = ["Salami", "Pizza", "Expired"]
Article.joins(:tags)
.where(tags: { name: required_tags })
.group('articles.id')
.having('count(*) = ?', required_tags.count)
它的作用是: