Module: ProstoCache::Extensions

Defined in:
lib/prosto_cache/extensions.rb

Instance Method Summary collapse

Instance Method Details

#lookup_enum_for(name, enum_class = nil) ⇒ Object

Raises:

  • (ArgumentError)


3
4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/prosto_cache/extensions.rb', line 3

def lookup_enum_for(name, enum_class=nil)
  raise ArgumentError, "No name provided" unless name
  enum_class = name.to_s.classify.constantize unless enum_class
  define_method("#{name}_with_lookup=") do |o|
    new_value = o
    unless o.is_a?(enum_class)
      new_value = o.blank? ? nil : enum_class[o.to_s]
    end
    self.send("#{name}_without_lookup=", new_value)
  end

  alias_method_chain "#{name}=", :lookup
end