Module: SerializableData

Defined in:
lib/serializable_data.rb,
lib/serializable_data/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



29
30
31
32
33
34
35
36
# File 'lib/serializable_data.rb', line 29

def self.included(base)
  base.extend(ClassMethods)
  base.class_eval do
    class_inheritable_accessor :_data_attributes
    class_inheritable_accessor :_data_column
    alias_method_chain :initialize, :serialized_data
  end
end

Instance Method Details

#initialize_with_serialized_data(attrs = {}) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/serializable_data.rb', line 38

def initialize_with_serialized_data(attrs = {})
  attrs ||= {}
  serialized_attrs = {}
  super_attrs = {}
  attrs.each_pair do |key, value|
    if self.class._data_attributes.include?(key.to_sym)
      serialized_attrs[key] = value
    else
      super_attrs[key] = value
    end
  end
  initialize_without_serialized_data(super_attrs)
  self.send("#{self.class._data_column}=", {})
  serialized_attrs.each_pair do |key, value|
    self.send("#{key}=", value)
  end
end