我试图用Ruby,ActiveRecord和MySQL在报价数据库中搜索多个词。我做的方式如下所示,它正在工作,但我想知道是否有更好的方法。用Ruby和MySQL搜索多个词
# receives a string, splits it in a array of words, create the 'conditions'
# query, and send it to ActiveRecord
def search
query = params[:query].strip.split if params[:query]
like = "quote LIKE "
conditions = ""
query.each do |word|
conditions += (like + "'%#{word}%'")
conditions += " AND " unless query.last == word
end
@quotes = Quote.all(:conditions => conditions)
end
我想知道是否有更好的方法来编写这个'条件'字符串。我也尝试过使用字符串插值,例如使用*运算符,但最终需要更多的字符串处理。在此先感谢
如果您在示例中演示了mysql的全文搜索 – 2011-03-11 19:56:47
,我会推荐'to_s.downcase.strip.split.uniq'将其折叠为小写并删除重复的单词。 – 2011-03-12 05:17:29
我正在使用Rails 2.3.5,但无论如何,答案有很大帮助。谢谢。 – Eduardo 2011-03-12 14:37:48