Sha256: 74aab86847368a1222d009d7613b6d73ed4c0b8fefd4215f9e628f231faad935

Contents?: true

Size: 1.99 KB

Versions: 59

Compression:

Stored size: 1.99 KB

Contents

# encoding: utf-8

require 'active_record'
require 'carrierwave/validations/active_model'

module CarrierWave
  module ActiveRecord

    include CarrierWave::Mount

    ##
    # See +CarrierWave::Mount#mount_uploader+ for documentation
    #
    def mount_uploader(column, uploader=nil, options={}, &block)
      super

      alias_method :read_uploader, :read_attribute
      alias_method :write_uploader, :write_attribute
      public :read_uploader
      public :write_uploader

      include CarrierWave::Validations::ActiveModel

      validates_integrity_of column if uploader_option(column.to_sym, :validate_integrity)
      validates_processing_of column if uploader_option(column.to_sym, :validate_processing)

      after_save :"store_#{column}!"
      before_save :"write_#{column}_identifier"
      after_destroy :"remove_#{column}!"
      before_update :"store_previous_model_for_#{column}"
      after_save :"remove_previously_stored_#{column}"

      class_eval <<-RUBY, __FILE__, __LINE__+1
        def #{column}=(new_file)
          column = _mounter(:#{column}).serialization_column
          send(:"\#{column}_will_change!")
          super
        end

        def remote_#{column}_url=(url)
          column = _mounter(:#{column}).serialization_column
          send(:"\#{column}_will_change!")
          super
        end

        def serializable_hash(options=nil)
          hash = {}

          except = options && options[:except] && Array.wrap(options[:except]).map(&:to_s)
          only   = options && options[:only]   && Array.wrap(options[:only]).map(&:to_s)

          self.class.uploaders.each do |column, uploader|
            if (!only && !except) || (only && only.include?(column.to_s)) || (except && !except.include?(column.to_s))
              hash[column.to_s] = _mounter(:#{column}).uploader.serializable_hash
            end
          end
          super(options).merge(hash)
        end
      RUBY

    end

  end # ActiveRecord
end # CarrierWave

ActiveRecord::Base.extend CarrierWave::ActiveRecord

Version data entries

59 entries across 54 versions & 4 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.7.4 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.7.3 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.7.2 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.7.1 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.7.0 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.9 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.8 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.7 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.6 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.5 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.4 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.3 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.2 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.1 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.6.0 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.5.17 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.5.16 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.5.15 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb
classiccms-0.5.14 vendor/bundle/gems/carrierwave-0.6.2/lib/carrierwave/orm/activerecord.rb