35 lines
860 B
Ruby
35 lines
860 B
Ruby
module RecordsUploads
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
after :store, :record_upload
|
|
before :remove, :destroy_upload
|
|
end
|
|
|
|
# After storing an attachment, create a corresponding Upload record
|
|
#
|
|
# NOTE: We're ignoring the argument passed to this callback because we want
|
|
# the `SanitizedFile` object from `CarrierWave::Uploader::Base#file`, not the
|
|
# `Tempfile` object the callback gets.
|
|
#
|
|
# Called `after :store`
|
|
def record_upload(_tempfile = nil)
|
|
return unless model
|
|
return unless file_storage?
|
|
return unless file.exists?
|
|
|
|
Upload.record(self)
|
|
end
|
|
|
|
private
|
|
|
|
# Before removing an attachment, destroy any Upload records at the same path
|
|
#
|
|
# Called `before :remove`
|
|
def destroy_upload(*args)
|
|
return unless file_storage?
|
|
return unless file
|
|
|
|
Upload.remove_path(relative_path)
|
|
end
|
|
end
|