コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

RailsのActiveRecoedのサニタイズ系のメソッドは5.2からpublicになっている

5.0と5.2を行き来していたのでてっきりprivateだと思ってたのでメモ

ネタ元

週刊Railsウォッチ(20180813)Rails 5.2.1リリース、sanitize_sql_arrayは5.2からpublicだった、Dev.toがRailsアプリのソースを公開ほか

書き方

5.2

ActiveRecord::Base.sanitize_sql_like("SELECT * FROM x")

それより前

$ bin/rails c
Loading development environment (Rails 5.0.2)
[1] pry(main)> ActiveRecord::Base.sanitize_sql_like("SELECT * FROM x")
NoMethodError: protected method `sanitize_sql_like' called for ActiveRecord::Base:Class
Did you mean?  sanitize_sql
               sanitize_sql_array

こんな感じで怒られる。なのでsendを使ってやらないといけない。

ActiveRecord::Base.send(:sanitize_sql_like,"SELECT * FROM x")

関連リンク

ActiveRecordのSanitization 初心者→中級者へのSTEP19/25 - Qiita