Railsでアプリケーション開発をしていると、深淵なる理由で生のSQLにテーブル名やカラム名を動的に埋め込みたいケースが出てくる。
その場合安全だと分かっていてもサニタイズしないでSQLに文字列を埋め込むのは気が引ける。
そういう場合は、
ActiveRecord::Base.connection.quote_table_name('table_name')
や
ActiveRecord::Base.connection.quote_column_name('column_name')
が使える。
他にもメソッドがあり、 http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/Quoting.html をみるとよい。
#quote_table_name
や#quote_column_name
をかますとクォートで囲ってくれる。
もし文字列のなかにクォートがあれば以下のようにエスケープしてくれる。
pry(main)> ActiveRecord::Base.connection.quote_table_name('users') => "`users`" pry(main)> ActiveRecord::Base.connection.quote_table_name('users`') => "`users```"