我的CarrierWave通过典型的ORM设置工作正常,并通过表格上传。我想弄清楚如何在表单提交上下文之外使用CarrierWave。例如,当用户注册时,我想捕获他们的图像并将其存储在CarrierWave中。这是我的东西,它不起作用:
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
uploader = ImageUploader.new
uploader.store! gravatar_url
也没有错误。我一直在网上浏览,却找不到解决方案。
最佳答案
我在尝试弄清楚如何使store!
与本地文件路径一起使用时遇到了很多麻烦。事实证明store!
实际上将文件作为参数,而不是字符串。
对于URL,首先需要require 'open-uri'
,然后打开文件/ URL。这样的事情应该起作用:
require 'open-uri'
gravatar_url = "http://www.gravatar.com/avatar/#{Digest::MD5.new.update(current_user.email)}?s=512&d=identicon"
tempfile = open(gravatar_url)
uploader = ImageUploader.new
uploader.store! tempfile
文件路径也可以使用相同的方法,但是在这种情况下,您不需要
open-uri
。
关于ruby-on-rails - CarrierWave如何在给定的URL下存储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7339797/