我在这里关注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使用)等数据库中使用?
谢谢!
答案 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}%”]