我有一个搜索框,需要使用查询搜索2个参数“title”或“tags”。我可以得到一个参数,但不是两个,试过'OR','||',','没什么用。
答案是什么?
原始代码:Book.where("title LIKE ?" , "%#{query}%")
我需要什么:Book.where("title LIKE ?" , "%#{query}%" OR "tags LIKE ?" , "%#{query}%")
答案 0 :(得分:8)
Book.where("title LIKE ? OR tags like ?" , "%#{query}%", "%#{query}%")
首先应该使用包含占位符(?
)的“完整”SQL查询作为where
查询的第一个参数,然后其余参数只是占位符的替换。< / p>
有关详细信息,请参阅Active Record Querying guide。
答案 1 :(得分:2)
我建议你看一下专门用于复杂查询的metawhere
(我知道这个不是,但值得注意)。
答案 2 :(得分:1)
来自Rails Guides:
Client.where("orders_count = ? AND locked = ?", params[:orders], false)