Rails Observers,Plugins和Migrations正在竞争,谁赢了?

Six*_*Bit 1 ruby-on-rails ruby-on-rails-plugins rails-migrations

我们刚刚在Rails应用程序中添加了几个观察者.现在,当从头开始运行迁移时,我们会收到一条错误消息,指出表不存在(呃,我们还没有迁移).抛出错误是因为正在加载要求column_names的模型中的插件.

我假设观察者正在加载模型,因为当我们在application.rb中注释掉观察者行时,不会抛出错误.

如何在不加载观察者和模型的情况下运行迁移?

要么

如何以一种在运行迁移时不会抛出错误的方式请求插件中的column_names?

Six*_*Bit 5

在Rails 3中,您可以通过确定是否正在运行Rake来跳过添加观察者:

config.active_record.observers = :my_model_observer unless File.basename($0) == 'rake'
Run Code Online (Sandbox Code Playgroud)

这会关闭观察者,这意味着不会加载模型和插件.