gpt4 book ai didi

ruby-on-rails - 事件存储装置附件

转载 作者:行者123 更新时间:2023-12-04 01:55:46 25 4
gpt4 key购买 nike

在 Rails 测试中。我有一个只有 activestorage 的基本模型:

class User < ApplicationRecord
has_one_attached :avatar
end

我试图让它成为固定装置,但没有运气(我确实有一张图片):
# users.yml
one:
avatar: <%= File.open Rails.root.join('test', 'files', 'image.png').to_s %>

如何通过装置正确附加头像文件?

最佳答案

这比任何人想象的要容易得多。我并不是要贬低任何人,因为根据这些答案我花了一些时间才弄清楚这一点。我将使用相同的数据模型来简化它。
用户有一个附加的“头像”。假设您有这个用户夹具:

# users.yml
fred:
name: Fred
这是您需要做的所有事情:
% mkdir test/fixtures/active_storage
现在,您只需将“attachments.yml”和“blobs.yml”放在该目录中。 “附件”记录将引用 blob 以及用户:
# active_storage/attachments.yml
freds_picture:
name: avatar
record: fred (User)
blob: freds_picture_blob
# active_storage/blobs.yml
freds_picture_blob:
key: aabbWNGW1VrxZ8Eu4zmyw13A
filename: fred.jpg
content_type: image/jpeg
metadata: '{"identified":true,"analyzed":true}'
byte_size: 1000
checksum: fdUivZUf74Y6pjAiemuvlg==
service_name: local
key在代码中是这样生成的:
ActiveStorage::Blob.generate_unique_secure_token
您可以在控制台中运行它以获取上述夹具的 key 。
现在,这将“工作”以附上图片。如果您需要实际文件存在,首先查看 config/storage.yml 以查看文件的存储路径。默认情况下,它是“tmp/storage”。上面的文件将存储在这里:
tmp/storage/aa/bb/aabbWNGW1VrxZ8Eu4zmyw13A
要计算校验和,请参见此处:
How is the checksum calculated in the blobs table for rails ActiveStorage
md5_checksum = Digest::MD5.file('tmp/storage/aa/bb/aabbWNGW1VrxZ8Eu4zmyw13A').base64digest
可以在夹具中使用 erb 填写文件大小和校验和:
  byte_size: <%= File.size('tmp/storage/aa/bb/aabbWNGW1VrxZ8Eu4zmyw13A') %>
checksum: <%= Digest::MD5.file('tmp/storage/aa/bb/aabbWNGW1VrxZ8Eu4zmyw13A').base64digest %>
请注意,您必须先将文件复制到存储目录中。
测试环境的存储根目录为 tmp/storage/默认情况下,剩余路径由 key 的前四个字符构成(即 tmp/storage/aa/bb )。

关于ruby-on-rails - 事件存储装置附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50453596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com