rails 7.0で`Enumerable.sum`を使用した時に発生するdeprecated warning (Rails 7.0 has deprecated Enumerable.sum in favor of Ruby's native implementation available since 2.4.)について
rails 7.0では数値以外のArrrayで第一引数を指定せずにEnumerable.sum
を使用していた場合に以下のdeprecated warningが発生します。
Rails 7.0 has deprecated Enumerable.sum in favor of Ruby's native implementation available since 2.4.
Sum of non-numeric elements requires an initial argument.
理由
rails 7.1からrails実装のEnumerable.sum
がなくなりrubyのEnumerable.sum
を呼び出すようになる為、数値以外のArrayに対しsum
メソッドを呼び出す場合には第一引数が必須となります。
詳細
rubyのEnumerable.sum
は第一引数に対して+
メソッドを実行します。
この第一引数のデフォルトが0
なので数値の場合はそのまま処理ができますが例えば文字列の場合は0
に対してString
を+
しようとするためTypeError
発生します。
rails 7.1以前
inject(:+)
された結果を返すので文字列の場合も結合可能
> ["a", "b"].sum
=> "ab"
rails 7.1以降
初期値0に対して文字列を+しようとしてエラーになる
> ['a', 'b'].sum
(irb):94:in `+': String can't be coerced into Integer (TypeError)
> ['a', 'b'].sum('')
=> "ab"
Author And Source
この問題について(rails 7.0で`Enumerable.sum`を使用した時に発生するdeprecated warning (Rails 7.0 has deprecated Enumerable.sum in favor of Ruby's native implementation available since 2.4.)について), 我々は、より多くの情報をここで見つけました https://qiita.com/SoarTec-lab/items/4918330496a39e389fe2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .