我想在数据库中添加一些包含活动存储附件的实例,但我无法做到这一点。我尝试了一些方法,但没有成功。
这是我的种子。

User.create(email: "[email protected]", password: "okokok") if User.count.zero?

50.times do |i|
  temp = Template.create(
    title: Faker::Name.name,
    description: Faker::Lorem.paragraph(2),
    user: User.first,
    github_link: Faker::SiliconValley.url,
    category: rand(0...4)
  )
  puts Template.first.photo
  temp.photo.attach(Template.first.photo)
end

谢谢你的帮助

最佳答案

几天后,它也出现在文档指南中:
http://edgeguides.rubyonrails.org/active_storage_overview.html#attaching-file-io-objects
有时需要附加一个未通过http到达的文件
请求。例如,您可能希望附加在上生成的文件
磁盘或从用户提交的URL下载。你可能还想
在模型测试中附加一个fixture文件。为此,请提供哈希值
至少包含打开的IO对象和文件名:

@message.image.attach(io: File.open('/path/to/file'), filename: 'file.pdf')

如果可能,也提供一个内容类型。主动存储尝试
从数据中确定文件的内容类型。它又回到了
如果无法提供内容类型,则提供该内容类型。
@message.image.attach(io: File.open('/path/to/file'), filename: 'file.pdf', content_type: 'application/pdf')

如果不提供内容类型,并且活动存储无法确定
文件的内容类型是自动的,默认为
应用程序/八位字节流。

08-26 08:40