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: { ... }
データベースに対応する列がないと、これらの属性は保持されず、同様にデータベース クエリに使用できないことに注意してください。