3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rails 7.2 へのアップデートで大量の「Defining enums with keyword arguments is deprecated and will be removed」が出た場合の対応

Last updated at Posted at 2025-01-28

はじめに

こんにちは、Gakken LEAP のバックエンドエンジニアの mizuno です。
先日、Rails 7.2 にアップデートした際、大量の「DEPRECATION WARNING」が表示されました。
その対応方法を共有します。

非推奨警告の内容

警告文の全文は以下の通りです。

DEPRECATION WARNING: Defining enums with keyword arguments is deprecated and will be removed
in Rails 8.0. Positional arguments should be used instead:

enum :sample_enum, {:example_one=>0, :example_two=>1}
 (called from <class:SampleClass> at /path/to/your/project/app/models/sample_class.rb:5)

非推奨となる理由と対応方法

Rails 8.0 では、enum の定義にキーワード引数を使う方法が廃止され、代わりに位置引数を使う方法が推奨されています。
そのため、以下のようにコードを修正する必要があります。

  • 変更前の書き方
enum sample_enum: { example_one: 0, example_two: 1 }
  • 変更後の書き方
enum :sample_enum, { example_one: 0, example_two: 1 }

また、_prefix_default オプションについては、アンダースコアなしの prefixdefault を使う形に変更が必要です。

enum :sample_enum, { example_one: 0, example_two: 1 }, prefix: true, default: :example_one

まとめ

警告が大量に出て驚きましたが、対応箇所はすべて警告文で明示されるため、順次修正すれば問題なく解消できました。
Rails 8.0 への移行を見据え、早めに対応しておくと良いでしょう。

エンジニア募集

Gakken LEAP では教育をアップデートしていきたいエンジニアを絶賛大募集しています!!
ぜひお気軽にカジュアル面談へお越しください!!

3
3
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
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?