EnumでActiveRecordの状態を管理する
Rails 4.1から導入された
###定義
class Article < ActiveRecord::Base
# enumの定義(キーと数字のハッシュを渡す。数字がDBカラムに設定される)
enum status: { draft: 0, published: 1 }
end
定義すると以下のようなメソッドが使える
article = Article.new
article.status #=> "draft"
article.draft? #=> true
article.published!
article.status #=> "published"
Article.statuses #=> {"draft"=>0, "published"=>1}
article = Article.new(status: :published) #キーで設定も可能
Article.published.where('created_at > ?', 3.days.ago)