・エラー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
コメント