Active Record Observer未在控制台/种子中触发

rna*_*aud 5 observer-pattern ruby-on-rails-3

我有观察员设立奖励模型更改的徽章.它在我使用视图时有效,但是当我从控制台或种子文件中执行以下操作时,我似乎没有触发:Photo.create(:user_id => user.id,:file => file) .

任何的想法 ?

class ExplorerObserver < ActiveRecord::Observer
  observe :photo

  def after_save(photo)
    user = photo.user
    Explorer.award_achievements_for(user) unless photo.new_record?
  end

end
Run Code Online (Sandbox Code Playgroud)

rna*_*aud 3

我的错误,这是一个愚蠢的问题,但对于存档,这是我的答案:

如果你有多个观察者,不要像这样放置多行

config.active_record.observers = :popular_observer
config.active_record.observers = :explorer_observer
Run Code Online (Sandbox Code Playgroud)

相反,我之前的代码是用最后一个观察者覆盖观察者!

config.active_record.observers = :popular_observer, :explorer_observer
Run Code Online (Sandbox Code Playgroud)