原文中要使用 Observers,需要 application.rb 中注册。像这样
config.mongoid.observers = :article_observer, :audit_observer
目前我只是在 rails console 中使用 (我这里用的zeus console),直接在 console 中require 'monogoid'
同时直接在 console 中创建了 Observers
[45] pry(main)> class ArticlemoObserver < Mongoid::Observer
[45] pry(main)* def before_create (article)
[45] pry(main)* Notifications.article("[email protected]", "New article", article).deliver
[45] pry(main)* end
[45] pry(main)* end
[32] pry(main)> class Articlemo
[32] pry(main)* include Mongoid::Document
[32] pry(main)* field :name, type: String
[32] pry(main)* field :body, type:String
[32] pry(main)* before_create :send_message
[32] pry(main)* protected
[32] pry(main)* def send_message
[32] pry(main)* p "call before_create function 'send_message'"
[32] pry(main)* end
[32] pry(main)* end
所有的一切只是为了测试一下 Observers 的效果。
目前貌似 ArticlemoObserver 没有加载,是什么情况?难道这种直接写在 console 的方式不能代替写在 application.rb 中?