1

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

命令: 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

应用程序.rb:

config.active_record.observers = :auditor_observer

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

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

4

1 回答 1

1

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

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

于 2013-09-13T12:29:32.217 回答