diff --git a/lib/generators/warp_engine/install/templates/image.rb b/lib/generators/warp_engine/install/templates/image.rb index b2263dd..94fde24 100644 --- a/lib/generators/warp_engine/install/templates/image.rb +++ b/lib/generators/warp_engine/install/templates/image.rb @@ -9,7 +9,8 @@ class Image < ApplicationRecord attr_accessor :file_upload - before_save :process_upload, if: -> { file_upload.present? } + before_validation :assign_upload_attributes, if: -> { file_upload.present? } + after_commit :store_upload_file, on: [ :create, :update ], if: -> { file_upload.present? } def self.ransackable_attributes(auth_object = nil) %w[content_type created_at deleted_at filename id original_filename updated_at] @@ -19,14 +20,18 @@ class Image < ApplicationRecord File.join(self.class.upload_path, filename.to_s) end + def url = "/api/image/#{id}" + private - def process_upload - FileUtils.mkdir_p(self.class.upload_path) + def assign_upload_attributes self.original_filename = file_upload.original_filename self.content_type = file_upload.content_type.presence || "application/octet-stream" - ext = File.extname(file_upload.original_filename) - self.filename = "#{SecureRandom.uuid}#{ext}" + self.filename = "#{SecureRandom.uuid}#{File.extname(file_upload.original_filename)}" + end + + def store_upload_file + FileUtils.mkdir_p(self.class.upload_path) IO.copy_stream(file_upload.to_io, file_path) end end