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