2010-12-06 39 views
1

Je vais avoir un problème très ennuyeux avec mes rails observateurs. Certains d'entre eux fonctionnent correctement et d'autres non.Les observateurs ActiveRecord ne sont pas appelés à rappel automatique spécifié (Rails 3)

Par exemple, je le FollowObserver mis en œuvre comme ceci:

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 

Il est pas appelé dans le serveur de rails, mais il est dans la console de rails (je ne comprends pas pourquoi). Lorsque j'exécute les tests, cela fonctionne comme prévu (c'est comme si lors de l'exécution du serveur de rails quelque chose l'empêchait de fonctionner).

configuré à l'application.rb ainsi:

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

Toute idée de ce que je suis absent?

+0

J'ai fusionné vos comptes non enregistrés, vous pouvez laisser des commentaires sous les questions. J'ai supprimé une de vos 'réponses' parce que je ne pouvais pas déterminer pour quelle réponse il aurait dû être un commentaire. –

Répondre

0

je pense qu'il devrait toujours être déclenché. Je voudrais essayer de remplacer la ligne debugger avec

logger.debug "FollowObserver::after_create" 

alors vous serez en mesure de voir dans vos journaux si l'action est déclenchée correctement. Une autre cause possible est que, même si vous pensez que l'objet est créé, il se peut qu'il ne soit pas valide et qu'il ne soit pas créé. Est-ce possible?