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

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

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

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

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

当用户搜索我的全名时:

例如,James Brown fname = James lname = Brown

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

谢谢!

它可能不漂亮,但我在我的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}%") } 

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

这最终工作得非常好……虽然不确定性能。 索引可以帮忙吗?

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