2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Railsでの検索で、大文字小文字の区別をしないようにする方法

Last updated at Posted at 2021-02-15

すでに有名な方法だけどひっかかる点があったので備忘録的に。

たとえばデータベースでAppleという文字列があったとして、検索フォームにappleといれてもヒットしないのはいかにも不便だろう。方法はいろいろあるが、一番手っ取り早いのはarel_tableを使う方法になるし、これは結構たくさん見つかる。

通常は

if request.post? then

	f = '%' + params[:find] + '%'
	@user = User.where"name like ?",f

end

という感じで、whereのあとにSQL文を書いて検索とする方法が一般的。

しかしこれだと上記のように大文字小文字の区別がつかなくて面倒臭いので

if request.post? then

	f = '%' + params[:find] + '%'
	user_table = User.arel_table
	@user = User.where(user_table[:name].matches(f))

end

これでいいんだけど、問題は複数のカラムから検索したいときはどうしようか?ってことがある。これが検索しても案外見つからなかったのでかいておくと

if request.post? then

	f = '%' + params[:find] + '%'
	user_table = User.arel_table
	@user = User.where((user_table[:name].matches(f)).or(user_table[:address].matches(f)))

end

という風に、.or()で繋いでやると、複数のカラムからの検索が可能になる。そんだけー。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?