Class: Spree::ActiveStorageAdapter::Attachment

Inherits:
Object
  • Object
show all
Defined in:
core/app/models/concerns/spree/active_storage_adapter/attachment.rb

Overview

Decorates ActiveStorage attachment to add methods expected by Solidus' Paperclip-oriented attachment support.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attachment, styles: {}) ⇒ Attachment

Returns a new instance of Attachment.



14
15
16
17
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 14

def initialize(attachment, styles: {})
  @attachment = attachment
  @transformations = styles_to_transformations(styles)
end

Instance Attribute Details

#attachmentObject (readonly)

Returns the value of attribute attachment.



12
13
14
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 12

def attachment
  @attachment
end

Instance Method Details

#destroyObject



49
50
51
52
53
54
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 49

def destroy
  return false unless attached?

  purge
  true
end

#exists?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 19

def exists?
  attached?
end

#filenameObject



23
24
25
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 23

def filename
  blob&.filename.to_s
end

#heightObject



41
42
43
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 41

def height
  [:height]
end

#url(style = nil) ⇒ Object



27
28
29
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 27

def url(style = nil)
  variant(style)&.url
end

#variant(style = nil) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 31

def variant(style = nil)
  transformation = @transformations[style] || default_transformation(width, height)

  @attachment.variant({
    saver: {
      strip: true
    }
  }.merge(transformation)).processed
end

#widthObject



45
46
47
# File 'core/app/models/concerns/spree/active_storage_adapter/attachment.rb', line 45

def width
  [:width]
end