我想找到只有一组特定标签的产品。
例如:包含两个或更多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
答案 0 :(得分:0)
如果您有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
where
products
,并且tags
具有所有指定的{{1}}。