Sha256: 3ceccd5a1e24ad86ca62fdf1c85e55e3e0908de766fcf15e1b96bcf8e7ebdc23
Contents?: true
Size: 667 Bytes
Versions: 1
Compression:
Stored size: 667 Bytes
Contents
module ClassyEnum module Attributes def classy_enum_attr(klass, method=nil) method ||= klass klass = klass.to_s.camelize.constantize # Add ActiveRecord validation to ensure it won't be saved unless it's an option self.send(:validates_inclusion_of, method, :in => klass.all, :allow_nil => true) self.instance_eval do # Define getter method define_method method do klass.new(super()) end # Define setter method define_method "#{method}=" do |value| super(value.to_s) end end end end end ActiveRecord::Base.send :extend, ClassyEnum::Attributes
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
classy_enum-0.5.0 | lib/classy_enum/attributes.rb |