如何将带有OR的位置拆分为更多行?

时间:2013-05-29 09:55:30

标签: ruby-on-rails activerecord activeresource

我正在尝试实现一个搜索功能,搜索模型中的所有字段以查找匹配的记录。

我想将where的{​​{1}}查询拆分到不同的行。我该怎么做?

这是一个有效的例子:

OR

但是我想要实现更多的字段,以便使事情更具可读性,我想将where's分成不同的行,例如:

u = User.where("LOWER(id) LIKE ? OR LOWER(name) LIKE ?", s, s)

这可以工作,但是如果姓名和姓氏相同,可能会返回重复记录等。我可以运行它然后删除所有重复项,但数据集太大,以后不能迭代它。我还需要在u = User.where("LOWER(id) LIKE ?", s) u << User.where("LOWER(name) LIKE ?", s) u << User.where("LOWER(surname) LIKE ?", s) 中执行此操作来执行其他命令。

有没有办法做到这一点,还是我应该把它全部放在一行?

2 个答案:

答案 0 :(得分:1)

如果您的所有观点都是可读性的话,我建议采用2个变量 -

query_statement = "LOWER(id) LIKE ? OR " + 
                  "LOWER(name) LIKE ? "


query_variables = s,s

然后在实际查询中使用这两个变量:

  

u = User.where(“#{query_statement},#{query_variables}”)

希望这有帮助!!

如果您找到更好的选择,请在此发布!谢谢!

答案 1 :(得分:0)

也试一试。

with_names = User.where("LOWER(name) LIKE ?", s)
with_surnames = User.where("LOWER(surname) LIKE ?", s)
@result = with_names | with_surnames