Sha256: 4ec26d152ccdb2deb008ecbd4a7a46050a93b9d540509630fc7a645a8a0bd800

Contents?: true

Size: 996 Bytes

Versions: 2

Compression:

Stored size: 996 Bytes

Contents

module Uploadcare
  module Rails
    module ActiveRecord
      def is_uploadcare_file attribute, options = {}
        options.symbolize_keys!
        opts = {
          autostore: true
        }.update options

        define_method "#{attribute}" do
          return nil unless attributes[attribute.to_s].present?

          if instance_variable_defined?("@#{attribute}_cached")
            instance_variable_get("@#{attribute}_cached")
          else
            file_data = ::Rails.application.config.uploadcare.api.file(attributes[attribute.to_s])
            instance_variable_set("@#{attribute}_cached", file_data)
            file_data
          end
        end

        if opts[:autostore]
          after_create "store_#{attribute}" 

          define_method "store_#{attribute}" do
            if send(attribute).present?
              send(attribute).store
            end
          end
        end
      end
    end
  end
end

ActiveRecord::Base.extend Uploadcare::Rails::ActiveRecord

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
uploadcare-rails-0.3 lib/uploadcare/rails/active_record.rb
uploadcare-rails-0.2.2 lib/uploadcare/rails/active_record.rb