Skip to content

Instantly share code, notes, and snippets.

@eguchi-ken
Last active September 13, 2019 05:02
Show Gist options
  • Save eguchi-ken/a4b6bd6320e728e2ce8c5c71e6a35605 to your computer and use it in GitHub Desktop.
Save eguchi-ken/a4b6bd6320e728e2ce8c5c71e6a35605 to your computer and use it in GitHub Desktop.
Rails memo

Enum で ArgumentError

モデルに enum 宣言した属性は、定義していない値をセットした時点 ArgumentError になる。このエラーは save や validation する前に発生するので注意が必要。モデルを更新するインターフェース(たとえばCSV)によっては不正な値を受け取る可能性を排除できない。したがってそのようなインターフェースを使う場合には値のチェック、もしくは ArgumentError のエラーハンドリングを行う。このメッセージはバリデーションエラーではないので、簡単に i18n ローカライズすることができないことに注意。

モデルの名称と属性の名称をローカライズする

モデルの名称と属性の名称をローカライズするには、下記のような翻訳データを用意する。

# モデル名
ja:
  activerecord:
    models:
      product: 製品

# モデルの属性名
ja:
  activerecord:
    attributes:
      product:
        code_name: コード名

正しく設定できたか確認するには rails console を実行して下記のようなメソッドを使えばよい。

  • Product.model_name.human
  • Product.human_attribute_name(:code_name)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment