【问题标题】:How to capture all ActiveRecord::Errors under config/initializersin Rails3如何在 Rails3 的 config/initializers 下捕获所有 ActiveRecord::Errors
【发布时间】:2014-05-02 20:06:25
【问题描述】:

我正在尝试将我的应用程序配置为从我的应用程序中的任何 ActiveRecord 对象打印错误。这样我就可以避免在所有事务中为每个对象打印错误消息。有没有办法做到这一点?

需要这样的东西

在配置/初始化程序中

ActiveRecord::Base.class_eval do
   # For each active_record object in my app
   if self.errors.any?
      puts self.errors.inspect
   end
end

【问题讨论】:

  • 不清楚你在问什么......你能给我们举一个你期望的行为的例子吗?甚至可能是一些伪代码?
  • 再一次 - 这对我来说似乎没有意义......您希望何时调用看跌期权?我问的原因是错误只存在于 Active Record 的单个实例上......而且只是短暂的。这一秒有一个错误,因为有人试图更新,说用户模型的用户名 - 但它太短了......但是下一秒 - 用户已经放弃了编辑,或者修复了错误 - 错误消失了.... 你什么时候要进行这个错误检查?

标签: ruby-on-rails ruby-on-rails-3 activerecord error-handling


【解决方案1】:

我相信您希望将所有 AR 错误集中在一个地方,

一种方法是使用rescue_from。简单地说,你可以在你的应用程序控制器中做这样的事情

class ApplicationController < ActionController::Base 
   protect_from_forgery with: :exception

   #your normal code

   rescue_from Exception do |exeception|
      #check if this is a AR exception
      #if yes then
      #log it in a different log file
      #if not
      # yield (to follow the default exception chain)
   end
end   

更合适的方法是将它放在一个模块中,并将 include 它放在 ApplciationController 中。

HTH

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    相关资源
    最近更新 更多