让我对 Rails 发疯的一件事是,我会ROLLBACK
在控制台中看到一条消息,而回滚没有附加任何理由。这通常会导致我寻找一些验证错误,但如果有更详细的消息会很高兴。
无论如何,是否可以为数据库回滚启用更详细的日志记录?
让我对 Rails 发疯的一件事是,我会ROLLBACK
在控制台中看到一条消息,而回滚没有附加任何理由。这通常会导致我寻找一些验证错误,但如果有更详细的消息会很高兴。
无论如何,是否可以为数据库回滚启用更详细的日志记录?
您可以使用after_rollback回调。
创建一个名为 RollbackLogger 的模块并将其放在您的 app/concerns 目录中
module RollbackLogger
extend ActiveSupport::Concern
included do
after_rollback :log_status, on: [:create, :update]
end
def log_status
Rails.logger.info "Rollback caused by: #{self.errors.full_messages}"
end
end
然后在每个 ActiveRecord 模型中包含这个模块:
class Foo < ActiveRecord::Base
include RollbackLogger
end
编辑:
正如Damien Roche 先生所建议的,您可以在目录中创建一个新文件config/initializers
并添加以下行:
ActiveRecord::Base.send(:include, RollbackLogger)
所有模型都将RollbackLogger
自动包含该模块。