Ruby on Rails 6.1に上げると以下のような警告が出ることがある。
DEPRECATION WARNING: Calling `<<` to an ActiveModel::Errors message array in order to add an error is deprecated. Please call `ActiveModel::Errors#add` instead.
この問題は次のように修正する。
-record.errors[:base] << "Something went wrong."
+record.errors.add :base, "Something went wrong."
応用:正規表現でプロジェクト全体のコードを一括置換する
が、数が多いと大変なので、エディタのGrep置換機能と正規表現を使ってこんなふうに一括置換すると便利かも。
- 検索条件 =
errors\[:(\w+)\] <<
- 置換文字列 =
errors.add :$1,
(エディタによっては$1
ではなく\1
になることもある)
もちろん、これはプロジェクト全体でerrors[:hoge] <<
が同じフォーマットで書かれていることが前提なので、フォーマットに一貫性がないときは置換対象から外れたり、おかしな置換結果になったりする場合があるので注意。
正規表現がわからん!という場合
僕が以前書いた正規表現の入門記事を見ればわかるはずです!