0

내 앱에서 업로드 사운드로 carrierwave를 사용합니다.Carrierwave, 내 캐시 폴더에 2 개의 폴더가 있고 내 파일은 내 캐시 폴더에 있습니다.

큰 파일을 사용하여 move_to_cache 및 move_to_store를 사용하기 위해 carrierwave를 구성하지만 문제는 파일을 지금 업로드 할 때 캐시 파일 carrierwave에서 두 개의 cache.id와 두 개의 폴더를 만들고 폴더에 폴더 하나를 생성하는 것입니다.

파일을 업로드 할 때 캐시 폴더에 1 개의 폴더가 있고 저장소 폴더에 1 개의 폴더가 있어야합니다. 그리고 내 캐시 폴더에 파일을 삭제하고 싶지만 사실 내 파일은 내 캐시 폴더에 있습니다.

나는 분명히 희망한다.

나는

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 

감사의 당신의 도움이 당신에게 내 sound_uploader.rb을 제공합니다.

답변

3

이의 가능성이 이유는 리소스가 두 번 생성되는 있도록 캐시 파일을 이동 carrierwave을 일으키는, 당신은 캉캉의 load_and_authorize_resource 또는 load_resource을 사용하고, 당신이 컨트롤러 액션 (@song = Song.new(params[:song])에서 모델 객체를 생성 깜빡이다 두번.