Railsのenumの命名で注意すること

まず、allとかactive_recordにすでにあるメソッドと同じenumは定義できない。
また、1つのモデルに複数のenumを定義した時に、通常の記載方法だと同じenum名を定義できません。

そんな時はこんな感じに書きます。

  enum company: { default: 0, everything: 1, job: 3, monitor: 4, tutor: 5 }, _suffix: true
enum style:   { default: 0, regular: 1, contract: 2, temp: 3, part_time: 4 }, _suffix: true
enum area:    { default: 0, tohoku: 1, kanto: 2, chubu: 3, kinki: 4, chugoku: 5, kyusyu: 6 }, _suffix: true

company,style,areaでdefaultが被っているので、

ArgumentError: You tried to define an enum named "style" on the model "Content", but this will generate a instance method "default", which is already defined by another enum.

こんなエラーが発生します。

_suffix: trueもしくは_prefixをつければsame valueつけれます。

ちゃんと書いてありました。

ActiveRecord::Enum

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA