【问题标题】:How to override where images are stored by CarrierWave? def store_dir doesn't seem to work如何覆盖 CarrierWave 存储图像的位置? def store_dir 似乎不起作用
【发布时间】:2011-11-18 21:46:18
【问题描述】:

我正在从 attachment_fu 转移到carrierwave,因为 attachment_fu 被 Rails 3 破坏了,并且希望能够使用我已经拥有的 attachment_fu 图像文件,而不是使用 carrierwave 制作新图像并将它们移动到其他地方。

我的图片是按 id 分区的,所以如果用户 id 是 61 并且他们上传了一个名为 "foo.png" 的文件,那么他们的旧 attachment_fu 图像将在 "public/images/users/0000/0061/foo.png"

在我的用户模型中,我使用以下方式安装载波图像上传器:

attr_accessible :user_avatar
mount_uploader :user_avatar, UserAvatarUploader

在我的UserAvatarUploader 中,我有这个:

def store_dir
  File.join Rails.root, "public/images/users", ("%08d" % model.id).scan(/\d{4}/).join("/")
end

所以当我设置:user_avatar 时,我应该得到"public/images/users/0000/0061/foo.png"

但是当我尝试将User 模型中的:user_avatar 设置为旧图像时

user.user_avatar = "#{Rails.root}/public/images/users/0000/0061/foo.png"

它以 "/uploads/tmp/20110916-1244-15398-7724/foo.png" 之类的形式返回

store_dir 似乎没有被正确覆盖。我需要做什么才能使这项工作正常进行?

【问题讨论】:

  • 您能否展示 (a) 安装上传器的型号代码,以及 (b) 您设置旧图像的位置(以及您的确切含义)?
  • 用型号代码更新了它。抱歉,如果旧图像上不清楚。旧图像由 attachment_fu 创建。我希望carrierwave 使用该图像和相同的路径。
  • 嗯,我想知道它是否只在您实际上传时使用store_dir,而不是您手动设置?

标签: ruby-on-rails ruby-on-rails-3 carrierwave


【解决方案1】:

Carrierwave 默认基本位置是公用文件夹

尝试通过使用来改变它

CarrierWave.configure do |config|
  config.root = Rails.root
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多