主动存储种子 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的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3 从单个数据库表生成种子文件

Rails 在幂等种子文件中查找或创建 - 不通过验证

Rails6.0.0 + Faker + Devise +种子

细胞分割基于matlab GUI阈值+边缘+形态学+种子点+主动轮廓图像分割含Matlab源码 1477期

细胞分割基于matlab GUI阈值+边缘+形态学+种子点+主动轮廓图像分割含Matlab源码 1477期

有人可以找到“未知属性”我的语法/逻辑错误是一个多对多的种子创建方法时,在Rails的连接表?