3

Rake 任务执行 ActiveRecord 模型操作。我添加ActiveRecord::Base了 rake 任务并且在本地工作,但不是在 Heroku 上导致这个错误:

未初始化的常量 BookingObserver

就行了ActiveRecord::Base。如果我不包括那条线,那么我根本无法使用模型(导致类似的错误只是模型而不是观察者)

4

4 回答 4

5

I was using config.threadsafe! which disables dependency loading (thus not loading the observer, just the model). The solution was to add config.dependency_loading = true if $rails_rake_task to the environment.

于 2012-12-11T00:16:11.320 回答
4

您的 rake 任务需要在执行 ActiveRecord 代码之前加载 Rails 环境。

# lib/tasks/my_tasks.rake
task :my_task => :environment do
  # Your task here
  # it has access to the Rails environment now
end

另请参阅此类似问题Railscast on custom rake tasks

于 2012-12-10T15:39:56.390 回答
3

config.threadsafe!我可以通过在 production.rb 中注释掉来解决这个问题。

于 2013-01-05T17:09:27.300 回答
0

我在 application.rb 中添加了这段代码

config.autoload_paths += Dir[ Rails.root.join('app', 'models', '**/') ]

就在调用之前:

config.active_record.observers = [:user_observer]

我认为因为我的应用程序,它不会自动发现模型/观察者/下的观察者目录

于 2018-07-18T05:34:30.247 回答