Sha256: 0c368f268e0be1de2fb45912004aa7a07698f2f466597efff6b7c72c2be8c029

Contents?: true

Size: 519 Bytes

Versions: 4

Compression:

Stored size: 519 Bytes

Contents

module ProstoCache
  module Extensions
    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
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
prosto_cache-0.2.5 lib/prosto_cache/extensions.rb
prosto_cache-0.2.4 lib/prosto_cache/extensions.rb
prosto_cache-0.2.3 lib/prosto_cache/extensions.rb
prosto_cache-0.2.2 lib/prosto_cache/extensions.rb