Sha256: 1a548a69f61735c776ece5048ce331a07c47beadff244bc335b6f80c752ee448

Contents?: true

Size: 887 Bytes

Versions: 1

Compression:

Stored size: 887 Bytes

Contents

module ActAsStorage
  extend ActiveSupport::Concern

  included do
    has_many :uploaded_files, as: :storage

    before_update :recalculate_files_data
    after_update  :recalculate_files_data_for_user
    after_destroy :recalculate_files_data_for_user
  end

  def recalculate_files_data
    sum   = 0
    files = self.uploaded_files.active

    files.each{ |f| sum += f.file_file_size }
    self.files_size  = sum
    self.files_count = files.size
  end

  def recalculate_files_data_for_user
    user        = self.user
    storages    = user.storages.active | user.recipes.active | user.pages.active | user.articles.active
    files_size  = 0
    files_count = 0

    storages.each do |s|
      files_size  += s.files_size
      files_count += s.files_count
    end

    user.files_size  = files_size
    user.files_count = files_count
    user.save(:validation => false)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
the_storages-0.0.1 app/models/concerns/act_as_storage.rb