我正在开发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
我们应该如何更新数据库中的数据,以便我们看到观察者工作????
答案 0 :(得分:1)
当你通过直接修改数据库来绕过activerecord时,你自然会绕过所有的activerecord回调。
所以答案是通过应用程序更新数据,或改为使用数据库触发器。