モデルに enum 宣言した属性は、定義していない値をセットした時点 ArgumentError になる。このエラーは save や validation する前に発生するので注意が必要。モデルを更新するインターフェース(たとえばCSV)によっては不正な値を受け取る可能性を排除できない。したがってそのようなインターフェースを使う場合には値のチェック、もしくは ArgumentError のエラーハンドリングを行う。このメッセージはバリデーションエラーではないので、簡単に i18n ローカライズすることができないことに注意。
- http://soccer1356abc.hatenablog.com/entry/2018/12/22/150516
- https://stackoverflow.com/questions/37177893/rails-enum-validation-not-working-but-raise-argumenterror
モデルの名称と属性の名称をローカライズするには、下記のような翻訳データを用意する。
# モデル名
ja:
activerecord:
models:
product: 製品
# モデルの属性名
ja:
activerecord:
attributes:
product:
code_name: コード名
正しく設定できたか確認するには rails console
を実行して下記のようなメソッドを使えばよい。
Product.model_name.human
Product.human_attribute_name(:code_name)