chr*_*aly 6 ruby-on-rails carrierwave
如何使用CarrierWave重命名现有图像?(这个问题是接近,但不是真的一样:重命名上传的文件与Carrierwave)例如,如果model.image.url是foo-bar-jpg我怎么能既文件,以及相应的数据库字段重命名为foo-bar.jpg?
model.image.recreate_versions! 将创建新文件但在数据库中它不会更改模型的图像字段.
小智 2
我使用了此处描述的技术:如何将远程文件分配给 Carrierwave?
这可能不是最好的方法,但它对我有用。我的远程文件恰好是旧文件名/路径。
首先,我更改了 Carrierwave 上传器,使其具有我想要的新文件名样式。然后我编写了一个 rake 任务来迭代记录并更新文件,如下所示:
model.remote_image_url = old_image_url
model.save!
Run Code Online (Sandbox Code Playgroud)
这将再次上传现有文件,根据更新的上传程序设置名称/路径(并重新创建所有版本)。我还没有解决清理旧文件的问题,我不确定如果你的 store_dir 是相同的(我的也改变了),这将如何工作。
确保在运行整个表之前对一些记录进行彻底测试,否则很容易把事情弄乱。请注意,更改 store_dir 将中断对现有文件的所有查找。
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |