- Published on
Rails4.1から列挙型enumが使えるが「いなーむ」とか発音すんのやめ
- Authors
- ジャバ・ザ・ハットリ
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 と発音しましょう。