Module: ExtraAttribute::ClassMethods

Defined in:
lib/extra_attribute.rb

Instance Method Summary collapse

Instance Method Details

#extra_attributes(column, attribute_arrays) ⇒ Object



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

def extra_attributes(column, attribute_arrays)
  @@column = column.to_s
  attribute_arrays.each do |attr|
    define_method "#{attr}" do
      extra_data ||= JSON.parse(attributes[@@column] ? attributes[@@column] : '{}')
      return extra_data[attr.to_s].present? ? extra_data[attr.to_s] : nil
    end

    define_method "#{attr}=" do |val|
      extra_data ||= JSON.parse(attributes[@@column] ? attributes[@@column] : '{}')
      extra_data[attr.to_s] = val
      self.send("#{@@column}=", extra_data.to_json)
    end
  end
end