module Shrine::Plugins::Column::AttacherMethods

Attributes

column_serializer[R]

Column serializer object.

Public Class Methods

new(column_serializer: shrine_class.opts[:column][:serializer], **options) click to toggle source

Allows overriding the default column serializer.

Calls superclass method
# File lib/shrine/plugins/column.rb, line 31
def initialize(column_serializer: shrine_class.opts[:column][:serializer], **options)
  super(**options)
  @column_serializer = column_serializer
end

Public Instance Methods

column_data() click to toggle source

Returns attacher data as a serialized string (JSON by default).

attacher.column_data #=> '{"id":"...","storage":"...","metadata":{...}}'
# File lib/shrine/plugins/column.rb, line 48
def column_data
  serialize_column(data)
end
load_column(data) click to toggle source

Loads attachment from column data.

attacher.file #=> nil
attacher.load_column('{"id":"...","storage":"...","metadata":{...}}')
attacher.file #=> #<Shrine::UploadedFile>
# File lib/shrine/plugins/column.rb, line 41
def load_column(data)
  load_data(deserialize_column(data))
end

Private Instance Methods

deserialize_column(data) click to toggle source

Converts the column data string into a hash (parses JSON by default).

Attacher.deserialize_column('{"id":"...","storage":"...","metadata":{...}}')
#=> { "id" => "...", "storage" => "...", "metadata" => { ... } }

Attacher.deserialize_column(nil)
#=> nil
# File lib/shrine/plugins/column.rb, line 77
def deserialize_column(data)
  if column_serializer && data && !data.is_a?(Hash)
    column_serializer.load(data)
  else
    data&.to_hash
  end
end
serialize_column(data) click to toggle source

Converts the column data hash into a string (generates JSON by default).

Attacher.serialize_column({ "id" => "...", "storage" => "...", "metadata" => { ... } })
#=> '{"id":"...","storage":"...","metadata":{...}}'

Attacher.serialize_column(nil)
#=> nil
# File lib/shrine/plugins/column.rb, line 62
def serialize_column(data)
  if column_serializer && data
    column_serializer.dump(data)
  else
    data
  end
end