2010-12-06 58 views
1

我的轨道观察员有一个非常恼人的问题。其中有些可以正常工作,有些则不能。ActiveRecord观察者没有在指定的回调中调用(Rails 3)

例如,我有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服务器时有些东西在避免它运行一样)。

我配置了application.rb中还有:

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

任何想法,我缺少什么?

+0

我已合并您的未注册帐户,您现在可以在问题下留下评论。我删除了你的一个'答案',因为我无法确定它应该评论哪个答案。 – 2011-09-05 04:52:10

回答

0

我认为它应该始终被触发。我会尝试用

logger.debug "FollowObserver::after_create" 

更换线debugger,那么你就可以在你的日志,看看动作是否正确触发。 另一个可能的原因是,当您认为该对象已创建时,它可能由于某种原因而无效,并且实际上并未创建。那可能吗?