調べてもうまく探せなかったので備忘録として。
CarrierWaveでUploaderごとにディレクトリを分けたいケースがあると思います。プロフィール画像はpublic
においてもいいけど、ユーザの投稿画像は別のところに置きたいとか。
config/initializers/carrierwave.rb
に、下記のように定義すれば、public
以外のところにファイルの保存先を自由に定義できます。
config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.root = "#{Rails.root}/private"
end
https://github.com/carrierwaveuploader/carrierwave/wiki/How-To%3A-Secure-Upload)
ただ、この方法だと前述のようにUploaderごとに変えたい場合にはうまく行きません。なので、下記のようにUploaderの中で書いてあげればうまくいきました。
app/uploaders/hoge_uploader.rb
class HogeUploader < CarrierWave::Uploader::Base
storage :file
def root # ここでrootを書いてあげる
"#{Rails.root}/private"
end
end