Merge branch 'fix/documentable_multiple_docs'

This commit is contained in:
Bertocq
2018-01-03 18:03:20 +01:00
7 changed files with 49 additions and 35 deletions

View File

@@ -22,11 +22,11 @@ class DirectUpload
# Refactor
@relation = if @resource.respond_to?(:images) &&
((@attachment.present? && !@attachment.content_type.match(/pdf/)) || @cached_attachment.present?)
@resource.images.send("build", relation_attributtes)
@resource.images.send("build", relation_attributtes)
elsif @resource.class.reflections[@resource_relation].macro == :has_one
@resource.send("build_#{resource_relation}", relation_attributtes)
@resource.send("build_#{resource_relation}", relation_attributtes)
else
@resource.send(@resource_relation).build(relation_attributtes)
@resource.send(@resource_relation).build(relation_attributtes)
end
@relation.user = user
@@ -63,4 +63,4 @@ class DirectUpload
}
end
end
end

View File

@@ -2,10 +2,10 @@ class Document < ActiveRecord::Base
include DocumentsHelper
include DocumentablesHelper
has_attached_file :attachment, url: "/system/:class/:prefix/:style/:hash.:extension",
hash_data: ":class/:style",
hash_data: ":class/:style/:custom_hash_data",
use_timestamp: false,
hash_secret: Rails.application.secrets.secret_key_base
attr_accessor :cached_attachment
attr_accessor :cached_attachment, :remove, :original_filename
belongs_to :user
belongs_to :documentable, polymorphic: true
@@ -44,6 +44,10 @@ class Document < ActiveRecord::Base
attachment.instance.prefix(attachment, style)
end
Paperclip.interpolates :custom_hash_data do |attachment, _style|
attachment.instance.custom_hash_data(attachment)
end
def prefix(attachment, _style)
if !attachment.instance.persisted?
"cached_attachments/user/#{attachment.instance.user_id}"
@@ -52,6 +56,17 @@ class Document < ActiveRecord::Base
end
end
def custom_hash_data(attachment)
original_filename = if !attachment.instance.persisted? && attachment.instance.remove
attachment.instance.original_filename
elsif !attachment.instance.persisted?
attachment.instance.attachment_file_name
else
attachment.instance.title
end
"#{attachment.instance.user_id}/#{original_filename}"
end
def humanized_content_type
attachment_content_type.split("/").last.upcase
end
@@ -89,7 +104,9 @@ class Document < ActiveRecord::Base
def remove_cached_attachment
document = Document.new(documentable: documentable,
cached_attachment: cached_attachment,
user: user)
user: user,
remove: true,
original_filename: title)
document.set_attachment_from_cached_attachment
document.attachment.destroy
end