我有一个Post模型,有两个属性:title和content。
我正在尝试制作一个搜索表单,用于在标题和/或内容列中查找关键字。
让我们说有这个记录:
title: Foobar bar foo
content: foobar baz foo
现在,如果用户输入“bar baz”或“baz bar”关键字(顺序并不重要),则应找到该记录。
我需要什么样的查询才能完成此任务?
答案 0 :(得分:1)
如果您确定用户输入是空格分隔的(每个关键字):
如果您使用Postresql,这将起作用:
keywords = user_input.split(" ").map{ |val| "%#{val}%"}
Post.where("title iLIKE ANY ( array[?] )", keywords)
对于多列:
Post.where("title iLIKE ANY ( array[?] ) OR content iLIKE ANY ( array[?] )", keywords, keywords)
答案 1 :(得分:0)
如果你有一个包含标题和内容属性的Post模型,那么你可以搜索如下的记录:
Post.where("(title ILIKE (?)) or (content ILIKE (?))","%#{params[:title_param]}%","%#{params[:content_param]}")