查找包含特定多个标签的所有产品

Posted

技术标签:

【中文标题】查找包含特定多个标签的所有产品【英文标题】:Find all Products that contain specific multiple Tags 【发布时间】:2018-03-12 16:46:33 【问题描述】:

我想查找只有一组特定标签的产品。

例如:具有两个或多个 id 的数组:[1, 2] 并且只返回具有这两个标签的产品。

我使用过Product.includes(:tags).where('tags.id' => [64, 65]).all,但这会返回包含其中一个这些标签的任何产品。

这是我的模型:

# models/product.rb
has_many :taggings, dependent: :destroy
has_many :tags, through: :taggings

# models/tag.rb
has_many :taggings
has_many :products, through: :taggings

# models/tagging.rb
belongs_to :product
belongs_to :tag

【问题讨论】:

【参考方案1】:

如果你有tag_ids = [64, 65],或许可以这样做:

tag_ids.each_with_object(Product.includes(:tags)) do |tag_id, query_base|
  query_base.where('tags.id' => tag_id)
end

我相信应该and 你的wheres 并给你products 具有所有指定的tags

【讨论】:

谢谢,不幸的是,这似乎仍然返回相同的东西。 :// 它返回一个ActiveRecord_Relation,其中包括Products,其中tagid either 64 or @987654332 @?嗯……

以上是关于查找包含特定多个标签的所有产品的主要内容,如果未能解决你的问题,请参考以下文章

根据多个标签查找产品

XPath 表达式查找标签名称包含“名称”的元素

使用 BeautifulSoup 查找包含特定文本的 HTML 标签

如何查找具有特定数据属性的所有标签?

在Excel中查找一个值,返回该值所在行或列的某个特定标签。

如何使用 c++ 仅查找特定 HTML 标记的内容?