使用seeds.rb内回形针(Using Paperclip within seeds.rb)

2019-08-17 03:52发布

让我们说,我在下面的项seeds.rb文件:

Image.create(:id => 52, :asset_file_name => "somefile.jpg", :asset_file_size => 101668, :asset_content_type => "image/jpeg", :product_id => 52)

如果我是种子,它会尝试指定的图像处理,我得到这个错误:

No such file or directory - {file path} etc...

我的图片进行备份,所以我并不真的需要创建它们; 但我需要的记录,虽然。 我不能评论在我的模型回形针指令; 那么它的工作原理; 但我想有可能是另一种解决方案。

是否有另一种模式,以完成它遵循? 或周转告诉回形针不处理图像?

Answer 1:

而不是直接设置资产列,尝试利用回形针并将其设置为红宝石File对象。

Image.create({
  :id => 52, 
  :asset => File.new(Rails.root.join('path', 'to', 'somefile.jpg')),
  :product_id => 52
})


Answer 2:

对方的回答当然这里适用于大多数情况,但在某些情况下,可能会更好,但提供一个UploadedFile ,而不是一个File 。 这更加紧密地模仿什么回形针会收到一个形式,并提供一些额外的功能。

image_path = "#{Rails.root}/path/to/image_file.extension"
image_file = File.new(image_path)

Image.create(
  :id => 52,
  :product_id => 52,
  :asset => ActionDispatch::Http::UploadedFile.new(
    :filename => File.basename(image_file),
    :tempfile => image_file,
    # detect the image's mime type with MIME if you can't provide it yourself.
    :type => MIME::Types.type_for(image_path).first.content_type
  )
)

尽管此代码是稍微复杂一些,它的正确解释与.DOCX,.PPTX或.xlsx扩展Microsoft Office文档,如果使用一个文件对象连接,将被上传的zip文件的好处。

这一点尤其重要,如果你的模型允许Microsoft Office文档,但不允许zip文件,因为验证否则会失败,你的对象不会被创建。 它不会影响到OP的情况,但它影响到我的,所以我想离开我的情况下,任何人都需要它的解决方案。



文章来源: Using Paperclip within seeds.rb