Module: JsonRecord::Serialized::InstanceMethods
- Defined in:
- lib/json_record/serialized.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#attributes_before_type_cast_with_serialized_json ⇒ Object
:nodoc:.
-
#attributes_with_serialized_json ⇒ Object
:nodoc:.
-
#json_attributes_before_type_cast ⇒ Object
:nodoc:.
-
#json_fields ⇒ Object
Get the JsonField objects for the record.
-
#read_attribute_before_type_cast_with_serialized_json(attr_name) ⇒ Object
:nodoc:.
-
#reload_with_serialized_json(*args) ⇒ Object
:nodoc:.
Class Method Details
.included(base) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 |
# 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 base.alias_method_chain :read_attribute_before_type_cast, :serialized_json base.alias_method_chain :attributes_before_type_cast, :serialized_json # Alias method chain doesn't work on [] methods and these are aliased directly in Rails 3.1 base.send :alias_method, :[], :read_attribute_with_serialized_json base.send :alias_method, :[]=, :write_attribute_with_serialized_json base.send :public, :[], :[]= end |
Instance Method Details
#attributes_before_type_cast_with_serialized_json ⇒ Object
:nodoc:
96 97 98 |
# File 'lib/json_record/serialized.rb', line 96 def attributes_before_type_cast_with_serialized_json #:nodoc: json_attributes_before_type_cast.merge(attributes_before_type_cast_without_serialized_json) end |
#attributes_with_serialized_json ⇒ Object
:nodoc:
85 86 87 88 89 90 |
# File 'lib/json_record/serialized.rb', line 85 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_attributes_before_type_cast ⇒ Object
:nodoc:
75 76 77 |
# File 'lib/json_record/serialized.rb', line 75 def json_attributes_before_type_cast # :nodoc: @json_attributes_before_type_cast ||= {} end |
#json_fields ⇒ Object
Get the JsonField objects for the record.
65 66 67 68 69 70 71 72 73 |
# File 'lib/json_record/serialized.rb', line 65 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_before_type_cast_with_serialized_json(attr_name) ⇒ Object
:nodoc:
92 93 94 |
# File 'lib/json_record/serialized.rb', line 92 def read_attribute_before_type_cast_with_serialized_json (attr_name) #:nodoc: json_attributes_before_type_cast[attr_name.to_s] || read_attribute_before_type_cast_without_serialized_json(attr_name) end |
#reload_with_serialized_json(*args) ⇒ Object
:nodoc:
79 80 81 82 83 |
# File 'lib/json_record/serialized.rb', line 79 def reload_with_serialized_json (*args) #:nodoc: @json_fields = nil @json_attributes_before_type_cast = nil reload_without_serialized_json(*args) end |