基于Rails Active Record中两列的组合进行查询

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

我有一个用户模型,该模型有两列,即名称和标签。这些列的组合在下面的数组中给出]

name_and_label_array = [["name1", "label1"], ["name2", "label2"], ["name3", label3"]

我想查询,这样只有那些用户应该返回其名称和标签组合存在于GIVEN数组(名称和标签阵列)中。

我尝试使用下面的代码,但是会引发MYSQL语法错误

User.where("[name, label] in ?", name_and_label_array)

请提出一些有效的方法来在ActiveRecord中进行处理。

在原始MYSQL中,我们可以通过以下方式编写

select name, label from users where (name, label) in (('name1', 'label1'), ('name2', 'label2'));

谢谢你。

mysql ruby-on-rails ruby-on-rails-4 activerecord rails-activerecord
1个回答
1
投票
您可以为数组的数组生成占位符。

placeholders = (['(?)'] * name_and_label_array.size).join(',') User.where("(name, label) in (#{placeholders})", *name_and_label_array)

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