Наблюдатели ActiveRecord не вызываются в указанном обратном вызове (Rails 3) - PullRequest
1 голос
/ 07 декабря 2010

У меня очень неприятная проблема с моими наблюдателями на рельсах.Некоторые из них работают должным образом, а некоторые - нет.

Например, у меня FollowObserver реализован следующим образом:

class FollowObserver < ActiveRecord::Observer
  def after_create(follow)
    debugger
    PendingMail.create({
      :method => "cause_being_followed",
      :data => Marshal.dump({
        :follower_id => follow.user_id,
        :cause_id    => follow.cause_id,
      })
    })
  end
end

Он не вызывается на сервере railsно это в консоли рельсов (я не понимаю, почему).Когда я запускаю тесты, он работает как положено (это похоже на то, что при запуске сервера rails что-то мешает ему работать).

Я также настроил application.rb:

config.active_record.observers = [
  :cause_observer, 
  :charity_follow_observer, 
  :comment_observer, 
  :follow_observer, 
  :news_observer
]

Есть идеи, что мне не хватает?

1 Ответ

0 голосов
/ 08 декабря 2010

я думаю, что это всегда должно срабатывать. Я бы попробовал заменить строку debugger на

logger.debug "FollowObserver::after_create"

тогда вы сможете увидеть в своих журналах, правильно ли запущено действие. Другая возможная причина заключается в том, что, хотя вы думаете, что объект создан, он может по какой-то причине быть недействительным и фактически не создан. Это возможно?

...