Rails4.1から列挙型enumが使えるが「いなーむ」とか発音すんのやめ
移転しました。
Rails4.1からActiveRecord::Enumが使えるようになった。
よく使う事例はUserモデルにrole(役割種別)があって、データはIntegerで0ならguest, 1ならuser, 2ならadminの3種類にするって場合。何の説明もなしにuser.role = 1 とかして「1? なに?どういう意味?」とならないように可読性を保ちつつ、変な値を入れさせないようにするのがEnum。
ActiveRecordにEnumの指定をする。roleはinteger。
class User < ActiveRecord::Base enum role: [ :guest, :user, :admin ] end
これにより以下のメソッドが使えるようになります。
u = User.first u.admin! # => true u.role # => "admin" u.admin? # => true u.guest? # => false
もちろんwhereなども使えます。
User.where(role: User.roles[:user])
定義した内容に記述はないが内部では以下のように0から定義されている。
class User < ActiveRecord::Base enum role: { guest: 0, user: 1, admin: 2 } end
後から定義を付け足して、コードに見えてない値が変化してしまう事故を防ぐなら、最初からハッシュで数値を入れておいた方が安全。
で、発音だけど「いなーむ」とか「いぬむ」とか言う人がいるらしいけど、それ英語圏の職場でやっても「?」となるだけ。ある程度は日本語発音の英語であっても根性でコミュニケーションを取ろうとする人を支持する立場をとっているが、技術用語に関してはしっかり発音して間違いのないように努めた方がいい。海外の職場では気を付けていたって勘違いが連発する。
なのでしっかりENUMと発音しましょう。
発音の確認はこちらからdictionary.reference.com