2011-05-05 68 views
0

给定一个模型:如何构建ToyS​​tore模型的Observer?

class User 
    include Toy::Store 
    attribute :name 
end 

我可以使用ActiveModel::Observer建立一个观察者?我删除了ActiveRecord框架,因为我没有在我的Rails应用程序中使用它。

添加喜欢的观察员:

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

似乎并没有工作。在应用程序配置中包含观察者不起作用,因为ActiveRecord框架已被删除。

+0

用户仅仅是一个就Rails而言,直接了解了Ruby类,所以我可以看到内置的观察者如何工作。你可能必须自己写。 – 2011-05-05 13:49:01

+0

你有没有想过这个? – hornairs 2013-01-23 22:42:35

回答

0

我也想用玩具::商店也观察员。事实证明,正常的对象生命周期事件,比如创建,保存,更新和删除,这些事件在Rails中是可观察的,因为ActiveRecord是可观察的。玩具店对象是ActiveModel对象,并没有相同的钩子。我在Why Toy Store Doesn't Work With Observers的博客文章中深入探讨了这个主题。

但是,好消息,仍然有可能使用观察者与玩具商店,它只是由你来实施它们。我还做了一个博客帖子上How to Use Observers With Toy::Store ,但这里是它的要点是:你的玩具对象,在这种情况下User,必须包括ActiveModel::Observing,当它是适合该模式必须触发事件:

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