1

「johndoe」を検索したときに、次のような名前のユーザーを返したいのですが。

「johndoe」、「John Doe」、「John Doe Jr。」、「Mr。John doe」...(可能であれば「JohnSr.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」という名前のユーザーが存在する場合は、「johndoe」が返されます。私は何をする必要がありますか?

Rails3.2.3でMySQLを使用しています。

助けてください!!

4

2 に答える 2

3

使ってみて

scope :by_name, lambda { |name| where('UPPER(name) LIKE %?%', name.upcase) }
于 2012-05-10T10:44:58.933 に答える
3
scope :by_name, lambda { |name| where('UPPER(name) LIKE ?', "%#{name.upcase}%") }
于 2012-05-10T10:49:21.737 に答える