シンプルな enum っぽいもの。selectable_attr をシンプルにしたもの。
class User include EnumAttr::Base attr_accessor :status enum_attr_for :status do enum 1, :active enum 2, :suspend enum 3, :deleted end def initialize(status) @status = status end end
User.status_ids #=> [1, 2, 3] User.status_keys #=> [:active, :suspend, :deleted] User.status_enums #=> [ #<EnumAttr::Enum:0x007fcf1a857618 @id=1, @key=:active>, #<EnumAttr::Enum:0x007fcf1b126988 @id=2, @key=:suspend>, #<EnumAttr::Enum:0x007fcf1b11ff48 @id=3, @key=:deleted> ]
user = User.new(1) user.status_key #=> :active user.status_id #=> 1 user.status_enum #=> enum
User.status_id_by_key :active #=> 1 User.status_enum_by_key :active #=> #<EnumAttr::Enum:0x007fcf1a857618 @id=1, @key=:active>
user = User.new(1) user.status_active? #=> true user.status_suspend? #=> false user.status_deleted? #=> false