使用CarrierWave,Rails 3上传种子文件

Nat*_*eyn 30 ruby rake ruby-on-rails seed carrierwave

我正在尝试使用CarrierWave在Rails 3中使用图像播种数据库,但是我尝试的任何内容似乎都无法手动上传它们.

pi = ProductImage.new(:product => product)
pi.image = File.open(File.join(Rails.root, 'test.jpg'))
pi.store_image! # tried with and without this
product.product_images << pi
product.save!
Run Code Online (Sandbox Code Playgroud)

有人知道如何使用CarrierWave种子吗?

Nat*_*eyn 39

原来CarrierWave的文档有点不对劲.在项目的GitHub存储库的README中有一个更新的代码段.

简而言之,但是:

pi = ProductImage.create!(:product => product)
pi.image.store!(File.open(File.join(Rails.root, 'test.jpg')))
product.product_images << pi
product.save!
Run Code Online (Sandbox Code Playgroud)

  • 如果需要,也可以在一行中执行此操作:`ProductImage.create!(:product => product,image:File.open(File.join(Rails.root,'test.jpg'))) (10认同)

nom*_*ime 10

只要使用mount_uploader方法将上传器安装到模型上,就可以使用相关的open方法使用carrierwave为模型设定种子.这将是实现同样事情的更简洁方式.在我的情况下,我从一个URL播种:

Game.create([
{
  :title => "Title",
  :uuid_old => "1e5e5822-28a1-11e0-91fa-0800200c9a66", 
  :link_href => "link_href", 
  :icon => open("http://feed.namespace.com/icon/lcgol.png"),
  :updated_at => "2011-01-25 16:38:46", 
  :platforms => Platform.where("name = 'iPhone'"), 
  :summary => "Blah, blah, blah...", 
  :feed_position => 0, 
  :languages => Language.where("code = 'de'"), 
  :tags => Tag.where(:name => ['LCGOL', 'TR', 'action'])
},
{...
Run Code Online (Sandbox Code Playgroud)

  • 而不是使用`open`,而是可以提供`remote_ [attribut name] _url`. (7认同)