Module: Colorizable::ModelExtensions::ClassMethods

Defined in:
lib/colorizable/model_extensions.rb

Instance Method Summary collapse

Instance Method Details

#colorize(*fields) ⇒ Object



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

def colorize(*fields)
  fields.each do |field|
    name = field

    define_method name do |*args|
      Color.by_hex(self[name]) rescue Color.new
    end

    define_method "#{name}=" do |value|
      color = if value.kind_of?(Hash)
        value = value.symbolize_keys
        Color.new(value[:r], value[:g], value[:b]) rescue nil
      else
        Color.by_hex(value.to_s) rescue nil
      end.try(:hex)

      self[name] = color
    end
  end
end