Ruby on Rails:rails 中的多个条件基于不同的字段使用 like

Ruby on Rails: Multiple conditions in rails based in different fields using like

我的数据库中有一个实体有多个字段。 如果某个输入包含在某些字段中,我需要在此实体中进行搜索,例如

实体车

我想要这样的搜索(伪 sql 想法)

 Select * FROM Car WHERE (LIKE model_name = "%maz%" OR LIKE owner = "%maz%")

我试过使用查找方法,但它不起作用

searched_string = "%maz%"
Car.find(:all, :conditions => {model_name: searched_string, owner: searched_string})

如何实现?

ActiveRecord 查询中使用 conditions 选项时,将为完全匹配生成结果 SQL。此外,您添加的每个条件都将使用 AND 而不是 OR.

连接

也就是说,您上面的查询生成的 SQL 可能如下所示:

SELECT * FROM Car WHERE (model_name = "%maz%" AND owner = "%maz%")

要获得您要查找的查询,您必须为 WHERE 子句手写 SQL。

Car.where("model_name ILIKE :q OR owner ILIKE :q", q: "%maz%")

注意:我使用的是上面更现代的 ActiveRecord 语法。


好消息是 Rails 5 将包括 support for "or" queries