class PaperTrail::TypeSerializers::PostgresArraySerializer

Provides an alternative method of serialization and deserialization of PostgreSQL array columns.

Public Class Methods

new(subtype, delimiter) click to toggle source
# File lib/paper_trail/type_serializers/postgres_array_serializer.rb, line 8
def initialize(subtype, delimiter)
  @subtype = subtype
  @delimiter = delimiter
end

Public Instance Methods

deserialize(array) click to toggle source
# File lib/paper_trail/type_serializers/postgres_array_serializer.rb, line 17
def deserialize(array)
  case array
  # Needed for legacy data. If serialized array is a string
  # then it was serialized with Rails < 5.0.2.
  when ::String then deserialize_with_ar(array)
  else array
  end
end
serialize(array) click to toggle source
# File lib/paper_trail/type_serializers/postgres_array_serializer.rb, line 13
def serialize(array)
  array
end

Private Instance Methods

deserialize_with_ar(array) click to toggle source
# File lib/paper_trail/type_serializers/postgres_array_serializer.rb, line 28
def deserialize_with_ar(array)
  ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array.
    new(@subtype, @delimiter).
    deserialize(array)
end