【问题标题】:ActiveRecord Observers are not called in specified callback (Rails 3)在指定的回调中未调用 ActiveRecord 观察者(Rails 3)
【发布时间】:2010-12-06 21:44:35
【问题描述】:

我的 Rails 观察员遇到了一个非常烦人的问题。 有一些可以正常工作,有一些不能正常工作。

例如,我的 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 控制台中(我不明白为什么)。 当我运行测试时,它按预期工作(就像在运行 rails 服务器时,某些东西正在避免它运行)。

我也配置了 application.rb:

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

知道我错过了什么吗?

【问题讨论】:

  • 我已经合并了您未注册的帐户,您现在可以在问题下留下 cmets。我删除了您的一个“答案”,因为我无法确定应该对哪个答案发表评论。

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


【解决方案1】:

我认为它应该始终被触发。我会尝试将debugger 替换为

logger.debug "FollowObserver::after_create"

然后您将能够在日志中查看操作是否正确触发。 另一个可能的原因是,当您认为对象已创建时,它可能由于某种原因无效并且实际上并未创建。这可能吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 2010-12-04
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2015-08-23
    相关资源
    最近更新 更多