主动存储种子 Rails
Posted
技术标签:
【中文标题】主动存储种子 Rails【英文标题】:Active storage seed Rails 【发布时间】:2018-10-09 19:21:32 【问题描述】:我想用一些包含活动存储附件的实例来为我的数据库播种,但我不知道该怎么做。我尝试了一些方法,但没有成功。
这是我的种子。
User.create(email: "test@ok.com", 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
感谢您的帮助
【问题讨论】:
【参考方案1】:几天前它也在文档指南中:
http://edgeguides.rubyonrails.org/active_storage_overview.html#attaching-file-io-objects
有时您需要附加不是通过 HTTP 到达的文件 要求。例如,您可能想要附加您生成的文件 磁盘或从用户提交的 URL 下载。您可能还想 在模型测试中附加一个夹具文件。为此,请提供一个哈希 至少包含一个打开的 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')
如果您不提供内容类型且 Active Storage 无法确定 文件的内容类型自动,默认为 应用程序/八位字节流。
【讨论】:
注意:'/path/to/file' 包括文件名。与您在文件名关键字参数中再次使用的文件名相同。【参考方案2】:好的,我找到了解决方案,我将它发布给处于相同情况的人:
temp.photo.attach(
io: File.open('storage/3n/GG/3nGGV5K5ucYZDYSYojV8mDcr'),
filename: 'file.png'
)
如果您有更简单的解决方案,请分享 ;)
【讨论】:
您可以接受自己的答案,从而关闭问题,以便在仅显示未回答的视图中过滤此问题 您能否详细说明您是如何找到要打开的文件的路径的? 这是你的文件路径。这是为了一粒种子。对不起,我不太明白你的问题。 我想我一直误解它是如何工作的。您是在此处打开种子的文件路径,而不是您尝试附加的图像的文件路径吗? 附上种子文件真的没有意义。我看起来你想附上图像文件的路径。以上是关于主动存储种子 Rails的主要内容,如果未能解决你的问题,请参考以下文章
Rails6.0.0 + Faker + Devise +种子
细胞分割基于matlab GUI阈值+边缘+形态学+种子点+主动轮廓图像分割含Matlab源码 1477期