Module: JsonRecord::Serialized::InstanceMethods

Defined in:
lib/json_record/serialized.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/json_record/serialized.rb', line 50

def self.included (base)
  base.before_save :serialize_json_attributes
  base.alias_method_chain :reload, :serialized_json
  base.alias_method_chain :attributes, :serialized_json
  base.alias_method_chain :read_attribute, :serialized_json
  base.alias_method_chain :write_attribute, :serialized_json
end

Instance Method Details

#attributes_with_serialized_jsonObject

:nodoc:



74
75
76
77
78
79
# File 'lib/json_record/serialized.rb', line 74

def attributes_with_serialized_json #:nodoc:
  attrs = json_attributes.reject{|k,v| !json_field_names.include?(k)}
  attrs.merge!(attributes_without_serialized_json)
  json_serialized_fields.keys.each{|name| attrs.delete(name)}
  return attrs
end

#json_fieldsObject

Get the JsonField objects for the record.



59
60
61
62
63
64
65
66
67
# File 'lib/json_record/serialized.rb', line 59

def json_fields
  unless @json_fields
    @json_fields = {}
    json_serialized_fields.each_pair do |name, schemas|
      @json_fields[name] = JsonField.new(self, name, schemas)
    end
  end
  @json_fields
end

#read_attribute_with_serialized_json(name) ⇒ Object



81
82
83
84
85
86
87
88
89
# File 'lib/json_record/serialized.rb', line 81

def read_attribute_with_serialized_json (name)
  name = name.to_s
  json_field, field_definition = self.class.json_field_definition(name)
  if field_definition
    read_json_attribute(json_field, field_definition)
  else
    read_attribute_without_serialized_json(name)
  end
end

#reload_with_serialized_json(*args) ⇒ Object

:nodoc:



69
70
71
72
# File 'lib/json_record/serialized.rb', line 69

def reload_with_serialized_json (*args) #:nodoc:
  @json_fields = nil
  reload_without_serialized_json(*args)
end

#write_attribute_with_serialized_json(name, value) ⇒ Object



91
92
93
94
95
96
97
98
99
# File 'lib/json_record/serialized.rb', line 91

def write_attribute_with_serialized_json (name, value)
  name = name.to_s
  json_field, field_definition = self.class.json_field_definition(name)
  if field_definition
    write_json_attribute(json_field, field_definition, value)
  else
    write_attribute_without_serialized_json(name, value)
  end
end