在指定的回调中没有调用ActiveRecord Observers(Rails 3)

时间:2010-12-06 21:44:36

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

我的rails观察者遇到了一个非常烦人的问题。 其中一些工作正常,一些工作不正常。

例如,我的FollowObserver实现如下:

class FollowObserver < ActiveRecord::Observer
  def after_create(follow)
    debugger
    PendingMail.create({
      :method => "cause_being_followed",
      :data => Marshal.dump({
        :follower_id => follow.user_id,
        :cause_id    => follow.cause_id,
      })
    })
  end
end

它没有在rails服务器中调用,但它在rails控制台中(我不明白为什么)。 当我运行测试时,它按预期工作(就像在运行rails服务器时,有些东西会阻止它运行)。

我也配置了application.rb:

config.active_record.observers = [
  :cause_observer, 
  :charity_follow_observer, 
  :comment_observer, 
  :follow_observer, 
  :news_observer
]

知道我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我认为它应该永远被触发。我会尝试用

替换行debugger
logger.debug "FollowObserver::after_create"

然后您将能够在日志中看到是否正确触发了操作。 另一个可能的原因是,当您认为对象已创建时,它可能由于某种原因无效并且实际上未创建。这可能吗?