class PaperTrail::AttributeSerializers::ObjectAttribute
Serialize or deserialize the `version.object` column.
Public Class Methods
new(model_class)
click to toggle source
# File lib/mongo_trails/attribute_serializers/object_attribute.rb, line 9 def initialize(model_class) @model_class = model_class end
Public Instance Methods
deserialize(attributes)
click to toggle source
# File lib/mongo_trails/attribute_serializers/object_attribute.rb, line 17 def deserialize(attributes) alter(attributes, :deserialize) end
serialize(attributes)
click to toggle source
# File lib/mongo_trails/attribute_serializers/object_attribute.rb, line 13 def serialize(attributes) alter(attributes, :serialize) end
Private Instance Methods
alter(attributes, serialization_method)
click to toggle source
Modifies `attributes` in place. TODO: Return a new hash instead.
# File lib/mongo_trails/attribute_serializers/object_attribute.rb, line 25 def alter(attributes, serialization_method) # Don't serialize before values before inserting into columns of type # `JSON` on `PostgreSQL` databases. return attributes if object_col_is_json? serializer = CastAttributeSerializer.new(@model_class) attributes.each do |key, value| attributes[key] = serializer.send(serialization_method, key, value) end end
object_col_is_json?()
click to toggle source
# File lib/mongo_trails/attribute_serializers/object_attribute.rb, line 36 def object_col_is_json? @model_class.paper_trail.version_class.object_col_is_json? end