目前我有以下查询
Policy.joins(policy_coverages: :cpt_code).where(policy_coverages: { cpt_codes: { code: code_array } })
这个查询返回的是包含数组中cpt_codes之一的所有策略。它正在执行OR
查询。
我如何编写一个查询,只返回具有policy_coverages和数组code_array
中所有cpt_codes的策略
分组记录和使用必须为每个组(每个策略)设置条件:
Policy.group(:id)
.joins(policy_coverages: :cpt_code)
.where(policy_coverages: { cpt_codes: { code: code_array } })
.having(CptCode.arel_table[Arel.star].count.gteq(code_array.length))
使用.eq
而不是.gteq
,如果你想匹配记录只与这些策略代码,而不是其他。