0

我使用carrierwave在我的應用中上傳聲音。Carrierwave,我的緩存文件夾中的2個文件夾和我的文件保留在我的緩存文件夾中

我使用大文件,所以我配置我的carrierwave使用move_to_cache和move_to_store,但問題是當我現在上傳文件,在我的緩存文件夾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

的可能的原因是,你正在使用康康舞的load_and_authorize_resource或load_resource,你忘了創建控制器動作(@song = Song.new(params[:song])模型對象,所以正在創建兩倍的資源,這將導致carrierwave移動文件緩存兩次。

相關問題