Rails观察者不工作

时间:2010-09-18 21:43:16

标签: ruby-on-rails observer-pattern rails-activerecord

每次保存新的“评论”时,我都会尝试在我的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

我哪里错了?我应该采取不同的方法吗?

2 个答案:

答案 0 :(得分:23)

实际上,只有在无法从观察者名称推断出评论类时才需要observe :comment。(或者,不称为CommentObserver)。

您是否在application.rb中声明了您的观察者:

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

答案 1 :(得分:2)

由于您的类名为CommentObserver,因此您不需要 observe 语句。

尝试将其删除。

或尝试:

observe Comment

而不是

observe :comment