trabajo-afectivo/app/models/application_model/has_attachments.rb

91 lines
1.8 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
module ApplicationModel::HasAttachments
extend ActiveSupport::Concern
included do
after_create :attachments_buffer_check
after_update :attachments_buffer_check
2019-06-04 03:40:48 +00:00
after_destroy :attachments_remove_all, if: :attachments_cleanup?
class_attribute :attachments_cleanup, default: false
end
class_methods do
=begin
mark model for cleaning up after destroying
=end
def attachments_cleanup!
self.attachments_cleanup = true
end
end
def attachments_remove_all
attachments.each { |attachment| Store.remove_item(attachment.id) }
end
=begin
get list of attachments of this object
item = Model.find(123)
list = item.attachments
returns
# array with Store model objects
=end
def attachments
Store.list(object: self.class.to_s, o_id: id)
end
=begin
store attachments for this object
item = Model.find(123)
item.attachments = [ Store-Object1, Store-Object2 ]
=end
def attachments=(attachments)
self.attachments_buffer = attachments
# update if object already exists
return if !id&.nonzero?
attachments_buffer_check
end
private
def attachments_buffer
@attachments_buffer_data
end
def attachments_buffer=(attachments)
@attachments_buffer_data = attachments
end
def attachments_buffer_check
# do nothing if no attachment exists
return 1 if attachments_buffer.nil?
# store attachments
article_store = []
attachments_buffer.each do |attachment|
article_store.push Store.add(
object: self.class.to_s,
o_id: id,
data: attachment.content,
filename: attachment.filename,
preferences: attachment.preferences,
created_by_id: created_by_id,
)
end
end
end