您可以在其中,方法在一個價值傳遞了這樣的多列使用符號:
@usersfiltered = User.where("first_name LIKE :search_name or last_name LIKE :search_name",
search_name: "%#{params[:search_word]}%")
更新:
要搜索first_name
和last_name
相結合,你可以連接兩個字段並添加另一個OR
條件。
這裏的問題是不同的數據庫有自己的連接風格。以下是MySQL和Postgres。
MySQL的:
@usersfiltered = User.where("first_name LIKE :search_name or last_name LIKE :search_name or concat(first_name, ' ', last_name) like :search_name",
search_name: "%#{params[:search_word].squish}%")
Postgres的:
@usersfiltered = User.where("first_name LIKE :search_name or last_name LIKE :search_name or (first_name || ' ' || last_name) like :search_name",
search_name: "%#{params[:search_word].squish}%")
我還添加了Ruby字符串函數squish,採取額外空間的照顧。
來源
2013-08-17 16:54:00
vee
試過這個,但如果我輸入「bob史密斯」,它不會返回任何結果。有沒有辦法添加這個邏輯? – brad
@brad,請參閱更新。 – vee