Module: ActsAsEnum
- Defined in:
- lib/acts_as_enum.rb
Overview
EnumAttr# == Example
acts_as_enum(attr, options)
attr is model attribute
options incldue :in, :prefix
:in value as Array [ [value, label], ... ] or [ [special_method_name, value, label], ... ]
:prefix value as true or false
table column status type is Varchar or Varchar2
class User < ActiveRecord::Base
acts_as_enum :status, :in => [ ['disable', '冻结'], ['enable', '激活'] ]
end
and type is Integer or number of string
NOTE: table column value must be match type, i.e. varchar: '1'; integer: 1
class User < ActiveRecord::Base
acts_as_enum :status, :in => [ ['disable', 0, '冻结'], ['enable', 1, '激活'] ]
end
class User < ActiveRecord::Base
acts_as_enum :status, :in => [ ['disable', '0', '冻结'], ['enable', '1', '激活'] ]
end
Also can usage alias enum_attr
enum_attr :status, :in => [ ['disable', 0, '冻结'], ['enable', 1, '激活'] ]
Will generate bellow:
Constants: User::STATUSES(return hash { 0 => "冻结", 1 => "激活" }), User::DISABLE, User::ENABLE
Named scopes: User.enable, User.disable
Class methods: User.status_options => [["冻结", 0], ["激活", 1]]
Instance methods: user.status_name, user.enable?, user.disable?
If with option prefix is true:
acts_as_enum :status, :in => [ ['disable', 0, '冻结'], ['enable', 1, '激活'] ], :prefix => true
Will generate bellow:
User::STATUS_DISABLE, User::STATUS_ENABLE, User.status_enable, User.status_disable, user.status_enable?, user.status_disable?
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
44 45 46 |
# File 'lib/acts_as_enum.rb', line 44 def self.included(base) base.extend ClassMethods end |