我正在尝试实现一个搜索功能,搜索模型中的所有字段以查找匹配的记录。
我想将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)
中执行此操作来执行其他命令。
有没有办法做到这一点,还是我应该把它全部放在一行?
答案 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