エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
[Rails]"_"でのwhere検索 - Qiita
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
[Rails]"_"でのwhere検索 - Qiita
概要 データを更新する処理を行なった際に、 検索条件に"_"が入ることで予期せぬデータを書き換えてしま... 概要 データを更新する処理を行なった際に、 検索条件に"_"が入ることで予期せぬデータを書き換えてしまいました。 問題となったコード Brandテーブルのnameカラムが"_"のものだけ、"ユニクロ"に変更したいというコードです。 どこが間違っているか Brand.where("name LIKE?", "_")で検索すると、 "_"のものだけではなく、 数字1文字のものや、漢字1文字のものなどにもヒットしてしまいます! 理由 Railsガイドに SQL LIKEワイルドカード(つまり、%と_)はエスケープされません とあるように、 検索条件の_ は任意の1文字全てにヒットしてしまうからです。 対策 sanitize_sql_likeを使用して、 引数のワイルドカード文字をエスケープしましょう。