Techioz Blog

Rails 7.1.2 および Ruby 3.2.1 の Enum の問題

概要

enum :status_ids, {
 pending: 0,
 verified: 1,
 work_in_progress: 2,
 complete: 3
}

enum :type_ids, {
 price_variance: 0,
 oos_in_store: 1,
 not_in_store_file: 2,
 not_in_master_db: 3,
 data_not_correct: 4
 }

これらは私の列挙型ですが、次のエラーに直面しています。

列挙型「status_ids」の宣言された属性タイプ。列挙型はデータベース列でサポートされるか、 を介して明示的な型で宣言される必要があります。 (ランタイムエラー)

属性を使用して status_ids と type_ids を明示的に呼び出した attr_accessor を試しました

データベース列も使用したくない

Rails 7.1.2 の enum の永続的なソリューション

解決策

データベース列がない場合は、属性メソッドを使用して同じ名前の属性を定義する必要があります。 7.1.2 変更ログの例によれば、属性は :string 型である必要があります。

コードに適用されます:

attribute :status_ids, :string
attribute :type_ids, :string

enum status_ids: { ... }
enum type_ids: { ... }

データベースに対応する列がないと、これらの属性は保持されず、同様にデータベース クエリに使用できないことに注意してください。