Module: EnumAttr::MixinForActiveRecord

Includes:
Mixin
Defined in:
lib/enum_attr_for_active_record.rb

Instance Method Summary collapse

Instance Method Details

#enum_attr(attr, enums) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/enum_attr_for_active_record.rb', line 9

def enum_attr(attr, enums)
  super(attr, enums)
  enums.each do |enum|
    scope "#{attr}_#{enum[2]}".to_sym, where("#{attr}=#{enum[1]}")
  end # end: enums.each

  validates_inclusion_of attr, :in => enums.map{|e| e[1] }, :allow_nil => true

  self.class_eval(%Q{
def attr
  read_attribute(attr.to_sym)
end

def attr=(value)
  write_attribute(attr.to_sym, value)
end
})

end