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

时间:2011-01-24 23:01:59

标签: ruby-on-rails-3 observer-pattern

我有观察员设立奖励模型更改的徽章。 它在我使用视图时有效,但是当我执行以下操作时,我似乎不会触发: 来自控制台或种子文件的Photo.create(:user_id => user.id,: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

2 个答案:

答案 0 :(得分:3)

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

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

config.active_record.observers = :popular_observer
config.active_record.observers = :explorer_observer

代替链接你的观察者,我之前的代码用最后一个代码覆盖了观察者!

config.active_record.observers = :popular_observer, :explorer_observer

答案 1 :(得分:1)

您是否忘记将其放在config/application.rb课程内的Application内?

config.active_record.observers = :photo_observer