Rails Observer не работает - PullRequest
       4

Rails Observer не работает

4 голосов
/ 19 сентября 2010

Я пытаюсь использовать наблюдателей в моем приложении 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

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

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

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

Ответы [ 2 ]

23 голосов
/ 19 сентября 2010

Действительно, вам нужно observe :comment, только если класс комментария не может быть выведен из имени наблюдателя (т.е. не называется CommentObserver).

Вы заявили о своем наблюдателе в заявке?

# Activate observers that should always be running
config.active_record.observers = :comment_observer
2 голосов
/ 19 сентября 2010

Вам не нужен оператор наблюдений , поскольку ваш класс называется CommentObserver.

Попробуйте его опустить.

Или попробуйте:

observe Comment

вместо

observe :comment
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...