如何将文件存储在carrierwave中的公共文件夹旁边?

Avi*_*try 19 ruby ruby-on-rails-3 carrierwave

默认情况下,Carrierwave接收store_dir上传器中生成的url,并预先指定rails应用程序的公用文件夹的路径并存储文件.

例如,如果

def store_dir
  "uploads/#{model.id}"
end
Run Code Online (Sandbox Code Playgroud)

然后文件存储在 public/uploads/:attachment_id

如果尝试将存储的文件移出公用文件夹,它仍然保存在公用文件夹中.有没有人知道如何将文件存储在公共文件夹之外?

Elm*_*tou 35

最简洁的方法是设置CarrierWave根选项

CarrierWave.configure do |config|
  config.root = Rails.root
end
Run Code Online (Sandbox Code Playgroud)

然后store_dir将在此根目录中使用.


Pre*_*her 12

我意识到这不是一个当前的问题,但我偶然发现它寻找其他东西.答案就是使用Rails.root,例如:

  def store_dir
    "#{Rails.root}/private/files/#{model.id}"
  end
Run Code Online (Sandbox Code Playgroud)


Ste*_*son 7

一个更清洁的解决方案是定义:

def store_dir
  nil
end
Run Code Online (Sandbox Code Playgroud)

查看文档