【发布时间】:2026-02-03 13:05:01
【问题描述】:
我正在尝试创建我的应用程序的只读版本,并对 ActiveRecord::Base 进行猴子修补,以便它在所有模型中为 readonly? 返回 true:
module ActiveRecord
class Base
def readonly?
true
end
end
end
这导致ActiveRecord::ReadOnlyRecord 异常在我尝试写入数据库的任何地方引发。有没有办法在代码中的任何地方忽略这个异常并继续执行代码。某种覆盖异常类的方法,使其不执行任何操作,即抑制异常。
【问题讨论】:
-
也许这方面的最佳答案可以帮助你:*.com/questions/25841377/…
-
出于好奇:为什么要将所有模型设为只读,然后又可以修改和保存它们?
-
@wiesion 我想创建我的应用程序的只读版本(特别是管理员)。一个冗长的方法可能是使用某种授权 gem,但更短的方法可能是让所有模型只读。我希望这些写入以静默方式失败,这样代码执行就不会因为引发的异常而受到阻碍,并且应用程序可以正常工作(除了没有发生写入)。
-
@ldeld 不,这无济于事,因为这只是一个包罗万象的问题。引发异常后,不会执行该行之后的代码。我想抑制特定类型的异常,以便即使发生该异常,它之后的代码也能正常执行。
标签: ruby-on-rails ruby postgresql exception