覆盖Rails上传器以播种数据库
我有一个CarrierWave rails上传器。 我想用假用户播种数据库,所以我试图用相同的种子文件添加图像。 图像在一个共同的存储空间中,所以如果我能在数据库中获取头像字符串,它们就可以工作。 当它保存用户时,虽然图像没有粘附。
# db/seeds.rb user1 = User.create :email => "test1@test.com", :password => "testing", :name => "Bob Dylan", :avatar => "v1357014344/bdylan.jpg" user1.save # IRB User.first => # > a = User.first > a.avatar = "v1357014344/bdylan.jpg" > a.save (10.7ms) commit transaction => true > a => #
您必须按以下方式插入数据。
File.open(File.join(Rails.root, 'test.jpg'))
所以整个用户创建看起来像
User.create :email => "test1@test.com", :password => "testing", :name => "Bob Dylan", :avatar => open("v1357014344/bdylan.jpg")
相关问题
除了使用open()
作为Nishant建议外,您还可以指定remote_avatar_url
来手动设置远程URL。
User.create :email => "test1@test.com", :password => "testing", :name => "Bob Dylan", :remote_avatar_url => "http://sofzh.miximages.com/ruby-on-rails/Joan_Baez_Bob_Dylan_crop.jpg"
感谢JosephJaber在CarrierWave,Rails 3的Seeding文件上传中提出建议
我使用这种方法在seed.rb中为CarrierWave Uploader填充了一些videourl
要直接更新数据库并跳过CarrierWave:
model[:attribute] = 'url.jpg' model.save