从数组中查找包含属性组合的所有记录

问题描述 投票:0回答:1

我有一个名为LayerProducts的表,其中包含layer_idproduct_id属性。

我想创建一个查询,我可以在其中传递如下所示的数组:

[ [:layer1_id, :product1_id], [:layer2_id, :product2_id], [:layer3_id, :product3_id] ]

并返回LayerProduct的所有记录,其中包含提供的任何组合。

父数组不是固定长度的,因此查询必须是动态的,以容纳任意数量的组合。

这是否可能,如果可以,我将如何使用SQL或活动记录来创建此查询?

sql ruby-on-rails activerecord ruby-on-rails-5 arel
1个回答
0
投票

您可以构造一个原始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

© www.soinside.com 2019 - 2024. All rights reserved.