2012-05-10 6 views
1

、私のような名前を持つユーザーを返すようにしたい「ジョン雌ジカ」で検索:Userモデルのスコープを定義する

「ジョン・ドウ」、「ジョン・ドウ」、「ジョン・ドウ・ジュニア」、「ミスター。ジョン雌ジカ」...(可能であれば 『ジョン・シニアドウ』)

私がこれまで行ってきたことと、私のUserモデルの名前付き範囲を定義していることである。

scope :by_name, lambda { |name| where('UPPER(name) LIKE ?', name.upcase) } 

そして中自分/ユーザー/検索:

name = params[:name] 
@users = User.by_name(name).paginate(page: params[:page], per_page: 10) 

しかし、これは動作していません。大文字と小文字を区別して同じ名前のユーザーを返すようになったので、 "john doe"という名前のユーザーが存在する場合、 "john doe"が返されます。私は何をする必要がありますか?

私はRails 3.2.3でMySQLを使用しています。

助けてください!

答えて

3

scope :by_name, lambda { |name| where('UPPER(name) LIKE %?%', name.upcase) } 
+0

感謝を使用してみてください!それは働いた.. :-) –

3
scope :by_name, lambda { |name| where('UPPER(name) LIKE ?', "%#{name.upcase}%") } 
関連する問題