rails ruby 中的 gem 数据无法上传回形针图像?

Paperclip image not uploads with faker gem data in ruby on rails?

我正在尝试使用 faker gem 上传虚假图像数据,但我看到了这个错误:

Paperclip::AdapterRegistry::NoHandlerError: No handler found for "https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1"

在db/seed.rb

5.times do 
    Image.create([{
        filename:Faker::Food.dish,
        title:Faker::Food.dish,
        item_image:Faker::Avatar.image('app/assets/image.jpg')
                }])
        end

在db/image.rb

    class CreateImages < ActiveRecord::Migration[5.2]
      def change
        create_table :images do |t|
          t.string :title
          t.string :filename
          t.timestamps

        end
      end

    end

in db/add_attachment_item_image_to_images.rb(回形针gem迁移文件)

class AddAttachmentItemImageToImages < ActiveRecord::Migration[5.2]
  def self.up
    change_table :images do |t|
      t.attachment :item_image
    end
  end

  def self.down
    remove_attachment :images, :item_image
  end
end

试试,

Faker::Avatar.image('image.jpg')

您的图片必须在 app/assets/images

或尝试关注,

File.open(File.join(Rails.root, "app/assets/images/image.jpg"))

如果FactoryGirl是你的下一个选择,你可以在spec/factories.rb中使用如下:

include ActionDispatch::TestProcess
FactoryGirl.define do
    factory :picture do 
      original_filename "test.jpg"
      file { fixture_file_upload(Rails.root.to_s + '/spec/fixtures/files/test.jpg', 'img/jpeg') }
  end
end

Faker::Avatar.image('app/assets/image.jpg') returns 带有 url 的 String 到图像占位符 ("https://robohash.org/app/assets/image.jpg.png?size=300x300&set=set1"),但 Paperclip 需要一个文件或 IO。

所以你应该传递类似 File.new(File.join(Rails.root, 'spec', 'fixtures', 'files', 'avatar.jpg')) 的内容(并在该路径放置一些图像)

有效

 20.times do
    Image.create(
     item_image: Rails.root.join("app/assets/images/image.jpg").open,
     filename: "Whole Wheat Pasta in Mushroom Sauce",
     title: "pasta"
                )
     end