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

Woz*_*Poz 11 ruby-on-rails ruby-on-rails-3

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

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

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

但我想要做的是搜索组合2列,:fname和lname

当用户搜索我的全名时:

例如,James Brown fname = James lname = Brown

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

谢谢!

DGM*_*DGM 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}%")
}
Run Code Online (Sandbox Code Playgroud)

请参阅我的其他帖子中的一些额外内容,以使搜索查询成为可选项.

  • 这在mysql中工作,我不知道其他db的. (2认同)