假设您在Rails中有一个简单的查询,就像这样
a = 42
Klass.where("`column_1` = ? OR `column_2` = ? OR `column_3` = ?", a, a, a)
这可以更优雅地完成,这样您就不需要输入a, a, a
三次了吗?它工作正常,但看起来很糟糕。
答案 0 :(得分:8)
可以尝试这样的事情
Klass.where(["`column` = :a OR `column` = :a OR `column` = :a", { a: user_name }])
答案 1 :(得分:1)
就我个人而言,我会在以下条件下使用find:
Klass.find_all_by_column([1, 2, 3])
将“列”替换为您要搜索的列名称。 用您的值替换1,2,3,它是一个可以添加或删除值的数组。
我的示例将生成一个SQL查询,例如: SELECT * FROM Klass WHERE Klass.column IN(1,2,3)
答案 2 :(得分:0)
不,你不能更优雅地做到这一点。
我猜你的列应该都是不同的列,对吗?请在您的问题中更具体。
如果列相同且值不同,则只能简化语句。
abc = [42,21,84]
Klass.where("column IN (?)", abc)
答案 3 :(得分:-1)
也许你的行
Klass.where("`column` = ? OR `column` = ? OR `column` = ?", a, a, a)
可以改为
Klass.where(["`column` = ? OR `column` = ? OR `column` = ?"] + a*3)