覆盖Rails Uploader以填充数据库。

4
我有一个CarrierWave rails uploader。我想用伪造的用户填充数据库,所以我试图在同一种子文件中添加图像。这些图像存在于公共存储中,因此如果我可以将头像字符串保存到数据库中,它们就会起作用。然而,当它保存用户时图片不会被保存。
# db/seeds.rb
user1 = User.create :email => "test1@test.com", :password => "testing", :name => "Bob Dylan", :avatar => "v1357014344/bdylan.jpg"
user1.save

# IRB
User.first
=> #<User id: 1, email: "test1@test.com", name: "Bob Dylan", avatar: nil> 

> a = User.first
> a.avatar = "v1357014344/bdylan.jpg"
> a.save
 (10.7ms)  commit transaction
=> true 
> a
=> #<User id: 1, email: "test1@test.com", name: "Bob Dylan", avatar: nil> 
3个回答

4
你需要按以下方式插入数据。
File.open(File.join(Rails.root, 'test.jpg'))

所以整个用户创建过程将如下所示:
User.create :email => "test1@test.com", :password => "testing", :name => "Bob Dylan", :avatar => open("v1357014344/bdylan.jpg")

Related question


3
除了使用Nishant建议的open()之外,您还可以指定remote_avatar_url以手动设置远程URL。
User.create :email => "test1@test.com", :password => "testing", :name => "Bob Dylan", :remote_avatar_url => "http://upload.wikimedia.org/wikipedia/commons/2/28/Joan_Baez_Bob_Dylan_crop.jpg"

感谢JosephJaber使用CarrierWave和Rails 3种子文件上传中提出的建议。

我使用了这种方法来在我的seeds.rb中填充一些用于CarrierWave Uploader的视频URL。


1

如果要直接更新数据库并跳过CarrierWave:

model[:attribute] = 'url.jpg'
model.save

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接