rails查询具有\u并且\u属于\u many,具有精确计数

chhqkbe1  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(385)

我有以下设置

class Cake
  has_and_belongs_to_many :ingredients # through a join table 
end

class Ingredient
 # secret_id , optional integer column. 
end

我收到一把秘密身份证。我想生成一个查询,返回蛋糕,只有当我可以得到所有的成分。

Cake A: 
  Ingredient A -> secret id -> 1
  Ingredient B -> secret id -> nil

Cake B: 
  Ingredient C -> secret id -> 3
  Ingredient D -> secret id -> nil

假设我们收到一个带有以下参数的请求: [3,4,5] 我当前的查询如下所示

Cake.includes(:ingredients).where(ingredients: { secret_id: secret_id_params + [nil] })

问题是,它会同时返回蛋糕a和蛋糕b。它返回一个蛋糕,因为它有一个零秘密id在它的成分之一。我不想退回蛋糕,因为我没有找到所有的配料。

nimxete2

nimxete21#

我想你只需要这样的东西

Cake.includes(:ingredients).where 
   ingredients: { secret_id: secret_id_params + 
      [nil] } and count(ingredients) = Ingredients.(
         count(distinct secretid) )

相关问题