您可以在 where 方法中使用符号为多个列传递一个值,如下所示:
@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来处理多余的空格。