通过MySQL命令行/工作台进行更新时,Rails 3活动记录观察器无法正常工作

时间:2013-09-13 10:58:32

标签: mysql ruby-on-rails-3 activerecord observers

我正在开发ROR 3应用程序。我添加了以下观察者,但我没有在控制台或日志文件中看到任何预期的输出(我已经尝试过开发和生产模式)

cmd: rails g observer auditor

模特:

class AuditorObserver < ActiveRecord::Observer
  observe :excel_file

  def after_update(excel_file)
    excel_file.logger.info('New contact added!')
    AuditTrail.new(execl_file, "UPDATED")
    puts "*******************"
    logger.info "********************************************"
  end
end

application.rb中:

config.active_record.observers = :auditor_observer

我在这里想念的是什么?当我更改数据库(通过Mysql工作台/命令行)时,我没有看到任何上述行被执行.. after_update / after_save。但是,如果我通过应用程序本身执行查询并执行@excel.save

,则after_save可以正常工作

我们应该如何更新数据库中的数据,以便我们看到观察者工作????

1 个答案:

答案 0 :(得分:1)

当你通过直接修改数据库来绕过activerecord时,你自然会绕过所有的activerecord回调。

所以答案是通过应用程序更新数据,或改为使用数据库触发器。