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