Rails 3 - 使用LIKE搜索组合的2列

时间:2010-10-16 01:30:50

标签: ruby-on-rails ruby-on-rails-3

我在这里关注ryan的简单搜索表格教程: http://railscasts.com/episodes/37-simple-search-form

我的用户模型中有以下行:

find(:all, :conditions => ['fname LIKE ?', "%#{search}%"])

但我想做的是搜索两个联合收割机列:fname& lname

当用户搜索我的全名:

例如,詹姆斯布朗 fname =詹姆斯 lname = Brown

有没有办法在Rails中安全地执行此操作,可以在SQL,MySQL或Postgres(heroku使用)等数据库中使用?

谢谢!

2 个答案:

答案 0 :(得分:14)

它可能不太漂亮,但我在我的Person模型中使用它:

scope :by_full_name lambda {|q| 
    where("first_name LIKE ? or last_name LIKE ? or concat(last_name, ', ', first_name) LIKE ?", "%#{q}%", "%#{q}%" , "%#{q}%")
}

请参阅我的other posts之一,以便让搜索查询成为可选项。

答案 1 :(得分:0)

这最终工作得非常好......但不确定性能。索引可以帮助吗?

:conditions => ['fname || lname LIKE?',“%#{search}%”]