0

Я использую несущую для загрузки звука в своем приложении.Carrierwave, 2 папки в моих папках кеша и мои файлы остаются в папках с кешем

Я использую большой файл, поэтому я настраиваю свою несущую волну для использования move_to_cache и move_to_store, но проблема заключается в том, когда я загружаю файл сейчас, в моей папке cache carrierwave создает 2 папки с двумя папками cache.id и 1 в моем магазине.

Мне нужно, когда я загружаю файл, просто имею 1 папку в папке с кешем и 1 папку в моей папке магазина. И в моей папке кеша я хочу, чтобы мой файл был удален, но на самом деле мой файл остается в моей папке с кешем.

Надеюсь, я был чист.

Даю sound_uploader.rb

class SoundUploader < CarrierWave::Uploader::Base 
before :store , :print 

def print(new_file) 
    puts ("PRINT CAAAAACHE") 
    puts (cache_id) 
end 

    # Choose what kind of storage to use for this uploader: 
    storage :file 

    def store_dir 
    "tmp/#{model.class.to_s.underscore}/store/#{model.id}" 
    end 

    def cache_dir 
    "tmp/#{model.class.to_s.underscore}/cache/#{model.id}" 
    end 
    def move_to_cache 
    puts("MOVE TO CACHE ") 
    false 
    end 

    def move_to_store 
    puts("MOVE TO STORE ") 
    true 
    end 

    def extension_white_list 
    %w(3ga 3gp 3g2 3gpp 3gp2 m4a m4b m4p m4v m4r mp4 aac flac flv avi asf wma wmv dpx mkv mka mks bwf mpg mpeg mp1 mp2 mp3 
     m1v m1a m2a mpa mpv rm mov ogm ogg ogv oga ogx nut riff webm weba wav mxf asx ts aiff aif aifc au snd caf) 
    end 


    def filename 
    model.title = original_filename if model.title.to_s == '' 
    "#{secure_token}.#{file.extension}" if original_filename.present? 
    end 

    protected 
    def secure_token 
    var = :"@#{mounted_as}_secure_token" 
    model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid) 
    end 
end 

благодарственное за вашу помощь.

ответ

3

Вероятная причина этого заключается в том, что вы используете cancan load_and_authorize_resource или load_resource, и вы забыли создать объект модели в действии контроллера (@song = Song.new(params[:song]), поэтому ресурс создается дважды, что приводит к тому, что carrierwave перемещает файл в кеш дважды.

 Смежные вопросы

  • Нет связанных вопросов^_^