シンプルな 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