首页 > 解决方案 > 如何在我的代码库中忽略/抑制特定类型的异常 (ActiveRecord::ReadOnlyRecord)

问题描述

我正在尝试创建我的应用程序的只读版本,并对 ActiveRecord::Base 进行猴子修补,以便它truereadonly?所有模型中返回:

module ActiveRecord
  class Base
    def readonly?
      true
    end
  end
end 

这导致在ActiveRecord::ReadOnlyRecord我尝试写入数据库的任何地方都会引发异常。有没有办法在代码中的任何地方忽略这个异常并继续执行代码。以某种方式覆盖异常类,使其不执行任何操作,即抑制异常。

标签: ruby-on-railsrubypostgresqlexception

解决方案


您可以尝试这样的操作,而不是将所有模型设为只读:

class ApplicationRecord < ActiveRecord::Base
  before_commit do
    raise ActiveRecord::Rollback, 'Read-only'
  end
end

推荐阅读