状況
Active RecordsのWhereに動的に文字列を渡してレコードを取得したい。クエリエラーになる文字列が含まれるかもしれないので、エスケープしてから渡さなければならない。
解決
inspect
する。 エスケープが必要な文字をそれしてくれる。
コード
lines.each do |line|
Table.where(content: line.inspect)
end
雑感
シングルクオートは意外といろんなところに含まれている。エスケープ忘れていてクエリのエラーがでるとびっくりするのでちゃんとサニタイズする習慣をつけたい。