2010-12-06 10 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 

これは、レール・サーバに呼び出されますが、それは、レールコンソールにあるではないです(なぜ私はそれを得ることはありません)。 テストを実行すると、期待どおりに動作します(レールサーバーを実行して実行しないような場合)。

私もapplication.rbに構成:

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

私が行方不明です何任意のアイデアを?

+0

登録されていないアカウントをマージしました。質問の下にコメントを残すことができます。あなたの「回答」のうちの1つを削除しました。なぜなら、どの回答がコメントであったはずだったのか判断できなかったからです。 –

答えて

0

私は常にそれが引き起こされるべきだと思います。私は、あなたが、アクションが正しくトリガされたかどうか、あなたのログに見ることができるようになります

logger.debug "FollowObserver::after_create" 

とラインdebuggerを交換しようとするだろう。 もう1つの考えられる原因は、オブジェクトが作成されたと考えている間に何らかの理由で無効となり、実際には作成されないということです。それは可能ですか?

関連する問題