Module: RailsCom::BlobExt

Defined in:
lib/rails_com/active_storage/blob_ext.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(klass) ⇒ Object



3
4
5
# File 'lib/rails_com/active_storage/blob_ext.rb', line 3

def self.prepended(klass)
  klass.class_attribute :private_service
end

Instance Method Details

#durationObject



7
8
9
10
11
# File 'lib/rails_com/active_storage/blob_ext.rb', line 7

def duration
  r = [:duration] || 0
  rh = TimeHelper.exact_distance_time(r.to_f)
  "#{rh[:minute]}:#{rh[:second].to_s.rjust(2, '0')}"
end

#privateObject



21
22
23
24
25
26
27
28
# File 'lib/rails_com/active_storage/blob_ext.rb', line 21

def private
  return @private if defined?(@private)
  rts = self.attachments.pluck(:record_type, :name).uniq.to_combined_h
  ps = Rails.cache.fetch('blob_default/private') do
    ActiveStorage::BlobDefault.where(private: true).pluck(:record_class, :name).to_combined_h
  end
  @private = ps.slice(*rts.keys).map { |p, v| (Array(rts[p]) - Array(v)).blank? }.uniq == [true]
end

#serviceObject



13
14
15
16
17
18
19
# File 'lib/rails_com/active_storage/blob_ext.rb', line 13

def service
  if private && private_service
    private_service
  else
    super
  end
end