例如,如果我尝试删除一个不存在的表,我将收到以下错误:
"#<ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation \"aiurea\" does not exist\n
我可以使用 ActiveRecord::StatementInvalid
来解决这个问题,但它对我来说太通用了;我只想在底层错误是 PG::UndefinedTable
时进行救援。我该怎么做?
P.S.:我看到 error.cause
导致了潜在的错误,但我不确定这是否是“公共(public)”接口(interface)以及它是否是一种不引人注目的方式。
最佳答案
2018 年更新:
ex.original_exception
已经是 deprecated支持 ex.cause
。这对我有用:
rescue ActiveRecord::StatementInvalid => ex
if ex.cause.is_a?(PG::UndefinedTable)
# do something
else
raise ex
end
end
关于ruby-on-rails - 拯救 PG::UndefinedTable 而不是 ActiveRecord::StatementInvalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34673364/