Sha256: cbf700a60c9f71e51df94dbc1539057a2a32da0e4cbce51793ad189be6137ab8

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

module Bhf
  module ActiveRecord
    module Upload
      extend ActiveSupport::Concern

      included do
        before_save :bhf_upload
        cattr_accessor :bhf_upload_settings
      end

      def bhf_upload
        self.class.bhf_upload_settings.each do |settings|
          name_was = send("#{settings[:name]}_was")
          param_name = read_attribute(settings[:name])
          file_string = if param_name && param_name[:delete].to_i != 0
            # File.delete(settings[:path] + name_was.to_s) if File.exist?(settings[:path] + name_was.to_s)
            nil
          else
            file = param_name && param_name[:file]
            if file.is_a? ActionDispatch::Http::UploadedFile
              # File.delete(settings[:path] + name_was.to_s) if File.exist?(settings[:path] + name_was.to_s)

              filename = Time.now.to_i.to_s+'_'+file.original_filename.downcase.sub(/[^\w\.\-]/, '_')
              path = File.join(settings[:path], filename)
              File.open(path, 'w') { |f| f.write(file.read) }
              filename
            else
              name_was
            end
          end
          write_attribute settings[:name], file_string
        end
      end

      module ClassMethods
        def setup_upload(settings)
          self.bhf_upload_settings = settings.each_with_object([]) do |s, obj|
            obj << {:path => '', :name => :file}.merge(s)
          end
        end
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
bhf-0.4.2.2 lib/bhf/active_record/upload.rb
bhf-0.4.2.1 lib/bhf/active_record/upload.rb
bhf-0.4.2 lib/bhf/active_record/upload.rb
bhf-0.4.1 lib/bhf/active_record/upload.rb
bhf-0.4.0 lib/bhf/active_record/upload.rb
bhf-0.3.11 lib/bhf/active_record/upload.rb