【发布时间】:2017-05-12 18:11:28
【问题描述】:
Carrierwave 的enter link description here 提供了 Carrierwave 上传文件的目录和 Carrierwave 查找文件的目录。但是,我想知道是否有办法定义类似 read_dir 的东西,这将是 Carrierwave 查找文件的路径,而留下 store_dir 仅用于存储文件。
我知道这可能没有多大实际意义,但我只是想知道。
【问题讨论】:
Carrierwave 的enter link description here 提供了 Carrierwave 上传文件的目录和 Carrierwave 查找文件的目录。但是,我想知道是否有办法定义类似 read_dir 的东西,这将是 Carrierwave 查找文件的路径,而留下 store_dir 仅用于存储文件。
我知道这可能没有多大实际意义,但我只是想知道。
【问题讨论】:
您可以根据对象的某些条件计算store_dir。当您需要不同的目录时,您也可以设置此条件。例如:
class MyModel < ActiveRecord::Base
attr_accessible :use_directory_for_storing
mount_uploader :file, MyFileUploader
end
class MyFileUploader < CarrierWave::Uploader::Base
# ...
def store_dir
if model.use_directory_for_storing
"some/directory/for/storing"
else
"some/directory/for/reading"
end
end
end
# Usage
object = MyModel.new(params)
object.use_directory_for_storing = true
object.save # the file will be stored in ".../some/directory/for/storing/" directory
object = MyModel.last
# will look for the file in the ".../some/directory/for/reading/" directory
object.file.path # => ".../some/directory/for/reading/..."
【讨论】: