当搜索" john doe"时,我想返回名称如下的用户:
" john doe"," John Doe"," John Doe Jr。"," Mr。 John doe" ......(如果可能的话,#34; John Sr. Doe")
到目前为止,我所做的是在我的用户模型上将命名范围定义为:
scope :by_name, lambda { |name| where('UPPER(name) LIKE ?', name.upcase) }
然后在我的/ users / search:
name = params[:name]
@users = User.by_name(name).paginate(page: params[:page], per_page: 10)
但这不起作用。我以完全相同的名字和区分大小写的方式回复用户 - 所以" john doe"如果一个用户名为" john doe"则返回。我需要做什么?
我正在使用MySQL和Rails 3.2.3。
请帮助!!
答案 0 :(得分:3)
尝试使用
scope :by_name, lambda { |name| where('UPPER(name) LIKE %?%', name.upcase) }
答案 1 :(得分:3)
scope :by_name, lambda { |name| where('UPPER(name) LIKE ?', "%#{name.upcase}%") }