我在两个模型之间存在多对多关系,以这种方式链接:
class Product < ApplicationRecord
has_many :categoriesproducts
has_many :categories, through: :categoriesproducts
end
class Category < ApplicationRecord
has_many :categoriesproducts
has_many :products, through: :categoriesproducts
has_and_belongs_to_many(:categories,
:join_table => "category_connections",
:foreign_key => "category_a_id",
:association_foreign_key => "category_b_id")
end
class Categoriesproduct < ApplicationRecord
belongs_to :products
belongs_to :category
end
因此:
用户可以在表单中查询数据库选择类别。假设我们在DB中有这个:
如果用户在表格中仅选择类别3中的类别3,我只想获得产品A.
我有以下查询:
Product.joins(:categories).where(categories: {id: [1,3]})
这使我所有产品都具有1类或3类=产品A和产品B.
如何获得具有与数组完全匹配的类别的产品?例如,只有具有类别1和3的那些,在示例中=产品A
答案 0 :(得分:0)
我做的事情如下:
Product.includes(:categories).select { |p| p.category_ids == [1,3] }