gpt4 book ai didi

ruby-on-rails - 没有模型的 Rails Active Storage

转载 作者:行者123 更新时间:2023-12-04 13:09:24 25 4
gpt4 key购买 nike

可以在没有模型支持的情况下使用 Rails Active Storage 吗?我有一个需要上传文件的表单,但我不希望将其附加到模型中。我只需要上传文件,以便我可以使用后台作业处理它,然后将其删除。

最佳答案

是的。
当 ActiveStorage 由模型支持时,涉及两个部分:

  • ActiveStorage::Blobactive_storage_blobs 中保存文件信息的记录表
  • ActiveStorage::Attachment使用 active_storage_attachments 将 blob 连接到模型的记录表

  • 您可以跳过创建 ActiveStorage::Attachment如果您拨打电话,请录音 create_and_upload! 直接地。这将创建一个唯一键,确定内容类型,计算校验和,将条目存储在 active_storage_blobs 中。 ,并上传文件:
    filename = 'local_file.txt'
    file = File.open(filename)
    blob = ActiveStorage::Blob.create_and_upload!(io: file, filename: filename)
    您可以稍后下载:
    blob.download
    并删除:
    blob.purge

    如果要跳过 ActiveStorage::Blob 的存储完全,您需要直接转到管理上传和下载文件的存储服务。例如,如果您使用 Disk存储你会看到这样的东西:
    ActiveStorage::Blob.service
    => #<ActiveStorage::Service::DiskService ...
    然后您必须生成自己的 key 并执行以下操作:
    service = ActiveStorage::Blob.service
    key = 'some_unique_key'
    service.upload(key, file)
    service.download(key)
    service.delete(key)

    要上传没有模型的文件,您可以 use form_with and specify a url 喜欢:
    <%= form_with url: "/uploads", multipart: true do |form| %>
    <%= form.file_field :picture %>
    <%= form.submit %>
    <% end %>
    然后在服务器上你可以得到 file和:
    file = params[:picture]
    blob = ActiveStorage::Blob.create_and_upload!(io: file, filename: file.original_filename)
    ...

    关于ruby-on-rails - 没有模型的 Rails Active Storage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67176634/

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