Carrierwave,我的缓存文件夹中的2个文件夹和我的文件保留在我的缓存文件夹中
问题描述:
我使用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
感谢的对你有所帮助。
答
的可能的原因是,你正在使用康康舞的load_and_authorize_resource
或load_resource,你忘了创建控制器动作(@song = Song.new(params[:song])
模型对象,所以正在创建两倍的资源,这将导致carrierwave移动文件缓存两次。