active_record
在rails控制台中使用
pry
加载后,如果一个查询导致异常,我通常必须停止控制台并重新启动它,否则所有查询都会导致异常。我确实有一些代码可以修复这个问题:
# .pryc
Pry.config.exception_handler = proc do |output, exception, _pry_|
output.puts "#{exception.class}: #{exception.message}"
output.puts exception.backtrace.first
if exception.instance_of?(ActiveRecord::StatementInvalid) && exception.original_exception.is_a?(PG::Error)
output.puts 'Rolling back transaction and starting a new one!'
connection = ActiveRecord::Base.connection
connection.rollback_db_transaction
connection.begin_db_transaction
end
end
但它似乎已经停止了在Rails5中的工作。问题似乎是
exception.original_exception
现在引发这个错误
<NoMethodError: undefined method `original_exception' for #<ActiveRecord::StatementInvalid:0x00007fd2ceb4ba10>>
我怎么解决这个问题?