使用Rails

时间:2015-12-15 14:43:05

标签: ruby-on-rails

我有一个Post模型,有两个属性:title和content。

我正在尝试制作一个搜索表单,用于在标题和/或内容列中查找关键字。

让我们说有这个记录:

title: Foobar bar foo
content: foobar baz foo

现在,如果用户输入“bar baz”或“baz bar”关键字(顺序并不重要),则应找到该记录。

我需要什么样的查询才能完成此任务?

2 个答案:

答案 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]}")