ruby-on-rails - 如何强制 ActiveStorage::Attached#attach 同步运行——禁用异步行为

标签 ruby-on-rails rails-activestorage

无论如何我可以强制使用这种方法,ActiveStorage::Attached#attach不排队后台工作?换句话说,我想禁用似乎包含在 ActiveStorage::Attached#attach 中的异步行为。以便该方法与 ActiveJob 同步执行而不是异步执行或类似 Sidekiq

最佳答案

这似乎目前有效:

def sync_attach(record, name, attachable)
  blob = ActiveStorage::Blob.create_and_upload!(
    io: attachable.open, filename: attachable.original_filename
  )
  blob.analyze
  attached = record.send(name)
  attached.purge
  attached.attach(blob)
end

# Given
class Thing < ActiveRecord::Base
  has_one_attached :image
end

# You can do
thing = Thing.create!
sync_attach(thing, :image, attachable)

如果您使用它,您还应该在方法中包含镜像。
我欢迎并寻求任何警告、更正、补充等。这是迄今为止我想出的最好的。

关于ruby-on-rails - 如何强制 ActiveStorage::Attached#attach 同步运行——禁用异步行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61309182/

相关文章:

ruby-on-rails - Rails "POST"成员路由响应所有请求类型

javascript - 我在哪里可以学习如何在 Ruby on Rails 中制作 Javascript 支持的下拉菜单?

ruby-on-rails - 我正在尝试使用 Action 电缆在 rails 5 中的两个 friend 之间创建聊天,但是所有用户都可以查看该消息,无论是否是 friend

ruby-on-rails - 尝试使用heroku上的rails应用程序从S3获取图像时出现ERR_CERT_COMMON_NAME_INVALID

ruby-on-rails - 获取 ActiveStorage 图像的完整 URL

ruby-on-rails - 无法在 Rails 中使用 ActiveStorage 创建文件字段

ruby-on-rails - 按类名和 ID 查找 ActiveRecord 对象

ruby-on-rails - 允许 Rails 中的空值的唯一索引

ruby-on-rails - 在模型上编辑图像时,如何使用 ActiveStorage has_many_attached i active admin?

ruby-on-rails - Rails 使用事件存储读取 csv 文件数据