2011-05-05 4 views
0

contient un modèle:Comment créer un observateur pour le modèle ToyStore?

class User 
    include Toy::Store 
    attribute :name 
end 

Puis-je utiliser ActiveModel::Observer pour construire un observateur? Je supprime le framework ActiveRecord, car je ne l'utilise pas dans mon application Rails.

Ajout d'un observateur comme:

class UserObserver < ActiveModel::Observer 
    def after_save(model) 
    puts "Hello!" 
    end 
end 

ne semble pas fonctionner. L'inclusion de l'observateur dans la configuration de l'application ne fonctionne pas, car l'infrastructure ActiveRecord est supprimée.

+0

L'utilisateur est juste un En ce qui concerne Rails, je peux voir comment les observateurs intégrés ne fonctionneraient pas. Vous pourriez avoir à écrire le vôtre. –

+0

Avez-vous déjà découvert cela? – hornairs

Répondre

0

Je voulais aussi utiliser des observateurs avec Toy :: Store aussi. Il s'avère que les événements de cycle de vie d'objet normal, tels que créer, enregistrer, mettre à jour et supprimer qui sont observables dans Rails sont observables à cause d'ActiveRecord. Les objets Magasin de jouets sont des objets ActiveModel et n'ont pas les mêmes crochets. J'ai fait une plongée profonde sur le sujet dans un blog sur Why Toy Store Doesn't Work With Observers. Mais, bonne nouvelle, il est toujours possible d'utiliser des observateurs avec un magasin de jouets, c'est à vous de les implémenter. J'ai aussi fait un billet de blog sur How to Use Observers With Toy::Store , mais est ici l'essentiel de celui-ci: votre jouet objet, dans ce cas User, doit inclure ActiveModel::Observing et doit déclencher l'événement quand il est approprié pour ce modèle:

class User 
    include Toy::Store 
    attribute :name 
    after_save :notify_observers_save_occured 

    private 

    def notify_observers_save_occured 
    self.class.notify_observers(:after_save, self) 
    end 

end 
Questions connexes