基于 Rails Active Record 中两列组合的查询
Query based on the combination of two columns in Rails Active Record
我有一个用户模型,它有两列,即名称和标签。
这些列的组合在下面的数组中给出
name_and_label_array = [["name1", "label1"], ["name2", "label2"], ["name3", label3"]
我想查询只有那些用户应该 return 其 名称和标签组合 存在于 GIVEN 数组 (name_and_label_array) 中。
我尝试使用以下代码,但它抛出 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'));
提前致谢。
您可以为数组的数组生成占位符。
placeholders = (['(?)'] * name_and_label_array.size).join(',')
User.where("(name, label) in (#{placeholders})", *name_and_label_array)
我有一个用户模型,它有两列,即名称和标签。 这些列的组合在下面的数组中给出
name_and_label_array = [["name1", "label1"], ["name2", "label2"], ["name3", label3"]
我想查询只有那些用户应该 return 其 名称和标签组合 存在于 GIVEN 数组 (name_and_label_array) 中。
我尝试使用以下代码,但它抛出 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'));
提前致谢。
您可以为数组的数组生成占位符。
placeholders = (['(?)'] * name_and_label_array.size).join(',')
User.where("(name, label) in (#{placeholders})", *name_and_label_array)