...
lib :
integer_to_enum.rb
:
module IntegerToEnum
class << self
def included(klass)
klass.extend(ModelClassMethods)
end
end
module ModelClassMethods
def fields_to_enum(options={})
class_eval <<-end_eval
def set_enum_options
@enum_options = #{options.inspect}
end
end_eval
options.each_pair do |k,v|
class_eval <<-end_eval
def #{k.to_s}
self.set_enum_options
@enum_options[:#{k.to_s}][read_attribute(:#{k.to_s}).to_i]
end
def
self.set_enum_options
unless @enum_options[:
return false
end
write_attribute(:
@
end
end_eval
end
end
end
end
enviroment.rb , 'end'
ActiveRecord::Base.send :include, IntegerToEnum
, "" Integer:
class YourModel < ActiveRecord::Base
fields_to_enum :appointment_type => [:unknown, :medical, :trial], :other_field_type => [:type_a, :type_b, :type_c]
end
- :
m = YourModel.find(1)
m.appointment_type
m.appointment_type = :trial
m.save
..