Rails 4.1.0 の ActiveRecord enums を使ってみる

こんにちは、鈴木です。

先日、Rails 4.1.0.rc1 がリリースされました。

リリースノートをパラパラを見ていたら ActiveRecord enums という新機能があったので試してみました。

 

ActiveRecord enums とは

会員のデータを保持する users テーブルを作成して、会員ステータスを保持する status カラムを用意して、その値が 0 なら仮登録、1 なら本登録、2 なら退会済みにしよう、・・・ということって良くありますよね?

ActiveRecord enums は、モデルクラスでこんな風に使います。

こうしておくと以下のように使うことができます。

ActiveRecord enums を使うと自動的に scope が定義されたり、値を変更するメソッド (resign! など) が定義されるようです。列挙型のようなことを簡単に実現することができますね。

 

DB に登録される値を 0, 1, 2, ... 以外にする

enum status: %i(temporary active resign) という具合に enum の第二引数に配列を渡した場合、DB に登録される値は 0, 1, 2, ... になります。他の値に設定したい場合は、以下のように Hash で指定します。

こうすることで、temporary なら 10, active なら 20, resign なら 30 が DB に登録されるようになります。

 

Comments are closed, but you can leave a trackback: Trackback URL.