module RailsCom::BlobExt

Public Class Methods

prepended(klass) click to toggle source
# File lib/rails_com/active_storage/blob_ext.rb, line 3
def self.prepended(klass)
  klass.class_attribute :private_service
end

Public Instance Methods

duration() click to toggle source
# File lib/rails_com/active_storage/blob_ext.rb, line 7
def duration
  r = metadata[:duration] || 0
  rh = TimeHelper.exact_distance_time(r.to_f)
  "#{rh[:minute]}:#{rh[:second].to_s.rjust(2, '0')}"
end
private() click to toggle source
# 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
service() click to toggle source
Calls superclass method
# File lib/rails_com/active_storage/blob_ext.rb, line 13
def service
  if private && private_service
    private_service
  else
    super
  end
end