5

我有一个简单的应用程序,可以上传我在博客数据库中使用carrierwave 保存的图片。(有标题、正文和图像)和我的凭据工作正常。

我在 s3 帐户中使用此 url 上传了一张图片:/s3.amazonaws.com/Buket_name/..path../thumb_smile.png

如何使用 heroku rails 控制台中的图像更新数据库。这似乎不起作用:

b = Blog.new
b.title = "a blog"
b.body = "some text"
b.image =  File.new("s3.amazonaws.com/Buket_name/..path../thumb_smile.png","a")
or
b.image =  File.open("s3.amazonaws.com/Buket_name/..path../thumb_smile.png","r")

Errno::ENOENT: No such file or directory - 
s3.amazonaws.com/Buket_name/..path../thumb_smile.png
4

1 回答 1

8

使用 CarrierWave 的remote_{name}_url=属性以获得最简单的解决方案。

b = Blog.new
b.title = "a blog"
b.body = "some text"
b.remote_image_url = 'http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png'
b.save

这个功能是 CarrierWave 特有的,所以如果你想用另一个库做类似的事情,open-uri从标准库中使用。

require 'open-uri'
image = open('http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png')

现在 imageTempfile可以像 Ruby 脚本中的文件一样使用。

require 'open-uri'
image = open('http://s3.amazonaws.com/Buket_name/..path../thumb_smile.png')

b = Blog.new
b.title = "a blog"
b.body = "some text"
b.image = image
b.save
于 2013-09-09T23:25:10.630 回答