LoginSignup
134
111

More than 5 years have passed since last update.

Rubyでenumを使いたい時

Last updated at Posted at 2013-01-13

C系言語でお馴染みのenumですが、Rubyにはenumがないので、moduleを使ってやっています。

enum定数の定義

基本的には定数を複数持ったモジュールを定義するだけです。

定数定義
module Status
  REQUEST = 1
  APPROVED = 2
  REJECTED = 3
end

enumの名前を使いたい場合

enum定数に対応する名前がある場合は、値と名前のハッシュを用意しておきます。

対応する名前
STATUS_NAME = {
  Status::REQUEST => 'リクエスト中',
  Status::APPROVED => '承認',
  Status::REJECTED => '拒否'
}
名前を返すメソッド
def status_text
  STATUS_NAME[self.status]
end

enumの値をまとめて配列で取得する

enumの値をまとめて配列で取得するためには、モジュールに以下のメソッドを追加します。

全enum値の取得メソッド
module Status
  def self.all
    self.constants.map{|name| self.const_get(name) }
  end
end

これで簡単にenum値の一覧が取れるようになりました。

statuses = Status.all
134
111
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
134
111