2010-09-18 91 views
4

我試圖用觀察員我的Rails應用程序的每一個新的「註釋」保存的時間來打造我的「活動」模式的新條目。評論保存得很好,但觀察員沒有正確創建活動。Rails的觀察不工作

// comment_observer.rb 
class CommentObserver < ActiveRecord::Observer 
    observe :comment 

    def after_save(comment) 
    event = comment.user.events.create 
    event.kind = "comment" 
    event.data = { "comment_message" => "#{comment.message}" } 
    event.save! 
    end 

這個觀察者很好用我在控制檯中使用它,但它似乎沒有被正確觀察;當我嘗試我的應用程序時,它似乎不會創建事件。我沒有看到錯誤或任何東西。

另外我在我的environment.rb文件中有config.active_record.observers = :comment_observer

我哪裏錯了?我應該採取不同的方法嗎?

+0

我剛剛結束了把這個邏輯在comment_controller.rb創建行動。我採取了錯誤的做法嗎? – goddamnyouryan 2010-09-18 22:03:03

+0

您是否重新啓動服務器? – 2010-09-18 22:25:36

+0

我有同樣的問題,除了它發生在一些模型,而不是其他人。奇怪的。 – thekingoftruth 2012-09-25 20:56:59

回答

2

您不應該需要觀察聲明,因爲您的類名爲CommentObserver。

請儘量不要。

或嘗試:的

observe Comment 

代替

observe :comment 
22

事實上,你需要observe :comment只有當評論類不能從觀察者的名字推斷(即,不叫CommentObserver)。

難道你宣佈你的觀察員application.rb中:

# Activate observers that should always be running 
config.active_record.observers = :comment_observer 
+0

不要忘記重新啓動服務器 – Archonic 2014-04-04 15:48:31

+1

正確的,你需要聲明在application.rb中的觀察員,這是有點惱人。 – superluminary 2014-04-15 12:15:10