Class: Attachment

Inherits:
ApplicationRecord
  • Object
show all
Includes:
Dis::Model, PagesCore::Sweepable
Defined in:
app/models/attachment.rb

Instance Attribute Summary

Attributes included from PagesCore::Sweepable

#cache_swept

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.formatsObject



28
29
30
31
32
33
34
35
36
# File 'app/models/attachment.rb', line 28

def formats
  { "audio/mpeg" => :mp3,
    "image/gif" => :gif,
    "image/jpeg" => :jpg,
    "image/jpg" => :jpg,
    "image/pjpeg" => :jpg,
    "image/png" => :png,
    "application/pdf" => :pdf }
end

.verifierObject



22
23
24
25
26
# File 'app/models/attachment.rb', line 22

def verifier
  @verifier ||= PagesCore::DigestVerifier.new(
    Rails.application.key_generator.generate_key("attachments")
  )
end

Instance Method Details

#digestObject



39
40
41
42
43
# File 'app/models/attachment.rb', line 39

def digest
  return unless id

  self.class.verifier.generate(id.to_s)
end

#filename_extensionObject



53
54
55
56
57
# File 'app/models/attachment.rb', line 53

def filename_extension
  return "" unless filename_extension?

  filename.match(/\.([^.]+)$/)[1]
end

#filename_extension?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'app/models/attachment.rb', line 59

def filename_extension?
  filename.include?(".")
end

#formatObject



49
50
51
# File 'app/models/attachment.rb', line 49

def format
  self.class.formats[content_type]
end

#format?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/models/attachment.rb', line 45

def format?
  content_type && self.class.formats.key?(content_type)
end

#to_paramObject

Includes a timestamp fingerprint in the URL param, so that rendered images can be cached indefinitely.



65
66
67
# File 'app/models/attachment.rb', line 65

def to_param
  [id, updated_at.utc.to_fs(cache_timestamp_format)].join("-")
end