我不認爲你可以在默認情況下carrierwave做到這一點,但你可以通過這個猴子補丁
module CarrierWave::Uploader::Url
def url
if $request
if file.respond_to?(:url) and not file.url.blank?
$request.protocol + $request.host_with_port + file.url
elsif current_path
$request.protocol + $request.host_with_port + (base_path || "") + File.expand_path(current_path).gsub(File.expand_path(root), '')
end
else
raise ArgumentError, "Request object is empty"
end
end
end
解決這個,因爲你不能從上傳(任何型號),您需要訪問軌session/request
信息在application_controller
定義before_filter
加載請求數據
before_filter :load_request
def load_request
$request = request
end
我只在本地存儲/ mongoid測試此補丁。我不知道這將如何在亞馬遜s3 /霧..
希望這可以幫助
感謝您的答覆。猴子補丁是否應該進入上傳文件?我也爲圖像使用本地存儲(Grid FS)。 – ags9 2012-01-17 14:20:01
你可以把它放在載波初始化器,這將做的伎倆..我相信它也可以用於本地存儲,但你可以驗證.. :) – RameshVel 2012-01-17 14:49:49