我正在使用 Rails 3.2.2 和 MySQL。我正在通过用户名(例如,、、、)搜索John
数据库Anthony
表Mark
列:
# User controller
User.search_by_name(params[:search]).order(:name)
# User model
def self.search_by_name(search)
if search
where('users.name LIKE ?', "%#{search}%")
else
scoped
end
end
但是,由于名称可以由两个或多个字符串组成(例如,John Henry
或Henry John
,Anthony Maria
或Maria Anthony
,Mark Alfred
或Alfred Mark
),我想在params[:search]
提供多个名称时也搜索用户。我试着用
def self.search_by_name(search)
if search
search.split(' ').each do |string|
where('users.name LIKE ?', "%#{string}%")
end
else
scoped
end
end
但我收到以下错误(例如,鉴于我正在搜索John Henry
):
NoMethodError (undefined method `order' for ["John", "Henry"]:Array).
如何正确搜索多个名称?