2010-09-18 3 views
4

Я пытаюсь использовать наблюдателей в своем приложении rails для создания новой записи в моей модели «События» каждый раз, когда сохраняется новый «Комментарий». Замечания сохраняются хорошо, но наблюдатель не создает события должным образом.Rails Observer Not Working

// 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 

Этот наблюдатель отлично работает, я использую его в консоли, но он, похоже, не соблюдает должным образом; когда я пытаюсь использовать приложение, он просто не создает события. Я не вижу ошибок или чего-то еще.

Также у меня есть config.active_record.observers = :comment_observer в моем файле environment.rb.

Куда я иду не так? Должен ли я придерживаться другого подхода?

+0

я просто в конечном итоге положить эту логику в comment_controller.rb создать действие. Я принимаю неправильный подход? – goddamnyouryan

+0

Вы перезапустили сервер? –

+0

У меня такие же проблемы, за исключением того, что это происходит с некоторыми моделями, а не с другими. Weird. – thekingoftruth

ответ

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

+1

Правильно, вам нужно объявить наблюдателя в application.rb, что немного раздражает. – superluminary