Sha256: 264349f23a3a4c8487d86e7ba2359a36c1fd924e56d25cdf23eae43519a3f88b

Contents?: true

Size: 1.34 KB

Versions: 3

Compression:

Stored size: 1.34 KB

Contents

require 'active_support/concern'

module Uploader
  module Fileuploads
    extend ActiveSupport::Concern

    included do
      class_attribute :fileupload_options, instance_writer: false

      delegate :asset, :multiple?, :params, :klass, to: :fileupload_glue, prefix: :fileupload

      after_create :fileupload_update, if: :fileupload_changed?
    end

    module ClassMethods
      # Join ActiveRecord object with uploaded file
      # Usage:
      #
      #   class Article < ActiveRecord::Base
      #     has_one :picture, as: :assetable, dependent: :destroy
      #
      #     fileuploads :picture
      #   end
      #
      #
      def fileuploads(*args)
        options = args.extract_options!

        self.fileupload_options ||= {}

        args.each do |column|
          self.fileupload_options[column] = options
        end
      end
    end

    # Generate unique key per form
    def fileupload_guid
      @fileupload_guid ||= Uploader.guid
    end

    def fileupload_guid=(value)
      @fileupload_changed = (@fileupload_guid != value)
      @fileupload_guid = value.blank? ? nil : value
    end

    def fileupload_changed?
      @fileupload_changed == true
    end

    protected

    def fileupload_glue
      @fileupload_glue ||= Uploader::FileuploadGlue.new(self)
    end

    def fileupload_update
      fileupload_glue.join!
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rails-uploader-0.4.2 lib/uploader/fileuploads.rb
rails-uploader-0.4.1 lib/uploader/fileuploads.rb
rails-uploader-0.4.0 lib/uploader/fileuploads.rb