LoginSignup
9
6

More than 3 years have passed since last update.

Rails 6.1で発生する"Calling `<<` to an ActiveModel::Errors message array in order to add an error is deprecated"警告を修正する

Last updated at Posted at 2021-03-03

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] <<が同じフォーマットで書かれていることが前提なので、フォーマットに一貫性がないときは置換対象から外れたり、おかしな置換結果になったりする場合があるので注意。

正規表現がわからん!という場合

僕が以前書いた正規表現の入門記事を見ればわかるはずです!

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6