ActiveStorage :: Blob.find_signed未捕获StandardError

时间:2019-02-27 15:54:30

标签: ruby-on-rails ruby rails-activestorage

我正在表单上运行ActiveStorage直接上传,并且在提交表单时将其上传到S3。我在一个服务对象中进行了检查,即使经过一些检查大小的JavaScript之后,该服务对象仍检查文件是否太大。如果是,则从S3删除该文件,然后从数据库中删除ActiveStorage :: Blob(出于技术限制)。当我运行以下代码时:

def blob
    @blob ||= ActiveStorage::Blob.find_signed(signed_id) unless signed_id.blank?
rescue StandardError => error
    # Handle error
end

如果用户刷新页面,并且使用signed_int重新提交了表单,则ActiveRecord :: RecordNotFound仍会引发给控制器,并且在备注行中失败。

是什么原因导致对StandardError的抢救没有被捕获?

编辑:这是堆栈跟踪

ActiveRecord::RecordNotFound - Couldn't find ActiveStorage::Blob with 'id'=80:
app/services/contact_us_form_manager.rb:76:in `blob'
app/services/contact_us_form_manager.rb:66:in `check_file_size'
app/services/contact_us_form_manager.rb:37:in `create'
app/controllers/admin/contacts_controller.rb:18:in `create'
app/controllers/application_controller.rb:280:in `set_true_user'
app/controllers/application_controller.rb:262:in `set_current_user'
app/controllers/application_controller.rb:255:in `set_current_client'
app/controllers/application_controller.rb:113:in `assign_time_zone'

0 个答案:

没有答案