Rails6.1 DEPRECATION ActiveModel::Errorsのエラー

・エラー1
DEPRECATION WARNING: Calling `<<` to an ActiveModel::Errors message array in order to add an error is deprecated.  Please call `ActiveModel::Errors#add` instead.

解決策→ ActiveModel::Errors#addを使用する

 # << は非推奨 ❌
 record.errors[:form_error] << 'エラーです'
 
 # errors.addを使用する ⭕️
 record.errors.add(:form_error, 'エラーです')

・エラー2
DEPRECATION WARNING: Enumerating ActiveModel::Errors as a hash has been deprecated.
 In Rails 6.1, `errors` is an array of Error objects, therefore it should be accessed by a block with a single block parameter like this:
 
 person.errors.each do |error|
   attribute = error.attribute
   message = error.message
 end
 
 You are passing a block expecting two parameters, so the old hash behavior is simulated. 
 As this is deprecated, this will result in an ArgumentError in Rails 6.2.
  • ActiveModel::Errorsをハッシュとして扱えなくなる
  • Rails6.1系から、errorsはエラーオブジェクトの配列になる
  • ブロック引数には1つしか入れられない
  • あなたはブロック引数を2つ設定している
  • Rails6.2からはArgumentErrorにする
 #これは非推奨になる。ブロック引数には1つのみ ❌
 model.errors.each do |attribute, message|
   errors.add(attribute, message)
 end
 
 #ブロック引数を1つにすれば ok ⭕️
 model.errors.each do |error|
   errors.add(error.attribute, error.message)
 end
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる