【问题标题】:Active Record Observer not firing in console/seedActive Record Observer 未在控制台/种子中触发
【发布时间】:2011-06-14 20:45:25
【问题描述】:

我设置了观察员来奖励模型更改的徽章。 它在我使用视图时有效,但是当我执行以下操作时似乎没有触发: 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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    config.active_record.observers = :popular_observer, :explorer_observer
    

    【讨论】:

      【解决方案2】:

      您是否忘记将其放在 config/application.rb 中,在您的 Application 类中?

      config.active_record.observers = :photo_observer
      

      【讨论】:

      • 不,我有:config.active_record.observers = :explorer_observer,因为规则在视图中有效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      • 2015-07-31
      • 2011-11-25
      • 2018-11-01
      • 1970-01-01
      相关资源
      最近更新 更多