RubyでEnumを扱う方法
Rubyには標準でEnumのサポートはありませんが、Enumを模倣する方法はいくつかあります。
以下にその一例を示します。
class Status STATUS_PENDING = 1 STATUS_APPROVED = 2 STATUS_REJECTED = 3 def self.all { pending: STATUS_PENDING, approved: STATUS_APPROVED, rejected: STATUS_REJECTED } end def self.for(key) all[key.to_sym] end end # 使用例 puts Status.for(:pending) # 出力: 1 puts Status.for(:approved) # 出力: 2
このコードでは、Statusクラスに定数を定義し、self.allメソッドでキーと値のハッシュを返すことでEnumのような振る舞いを実現しています。
self.forメソッドを使って、キーに対応する値を取得できます。