我有一个名为LayerProducts
的表,其中包含layer_id
和product_id
属性。
我想创建一个查询,我可以在其中传递如下所示的数组:
[ [:layer1_id, :product1_id], [:layer2_id, :product2_id], [:layer3_id, :product3_id] ]
并返回LayerProduct
的所有记录,其中包含提供的任何组合。
父数组不是固定长度的,因此查询必须是动态的,以容纳任意数量的组合。
这是否可能,如果可以,我将如何使用SQL或活动记录来创建此查询?
您可以构造一个原始sql并使用活动记录。像这样的东西:
def self.for_multiple_lp(arr=[])
# Handle case when arr is not in the expected format.
condition = arr.collect{|a| "(layer_id = a[0] AND product_id = a[1])"}.join(" OR ")
where(condition)
end
仅对于没有活动记录的原始sql,您可以参考this