Active Record Observer 未在控制台/种子中触发

发布于 2024-10-14 05:40:29 字数 359 浏览 4 评论 0原文

我设置了观察员来奖励模型变化的徽章。 当我使用视图时它可以工作,但是当我执行以下操作时我似乎不会触发: Photo.create(:user_id => user.id, :file => file) 从控制台或种子文件。

有什么想法吗?

class ExplorerObserver < ActiveRecord::Observer
  observe :photo

  def after_save(photo)
    user = photo.user
    Explorer.award_achievements_for(user) unless photo.new_record?
  end

end

I have observers set up to award badges on model changes.
It works when I'm using the view, but I doesn't seem to fire when I do something like :
Photo.create(:user_id => user.id, :file => file) from the console or from the seed file.

Any idea ?

class ExplorerObserver < ActiveRecord::Observer
  observe :photo

  def after_save(photo)
    user = photo.user
    Explorer.award_achievements_for(user) unless photo.new_record?
  end

end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

私野 2024-10-21 05:40:29

我的错误,这是一个愚蠢的问题,但对于存档,这是我的答案:

如果你有多个观察者,不要像这样放置多行,

config.active_record.observers = :popular_observer
config.active_record.observers = :explorer_observer

而是链接你的观察者,我以前的代码是用最后一个观察者覆盖观察者!

config.active_record.observers = :popular_observer, :explorer_observer

My mistake, it was a silly issue, but for the archive, here is my answer :

If you have multiple observers, dont put multiple lines like that

config.active_record.observers = :popular_observer
config.active_record.observers = :explorer_observer

instead chain your observers, my previous code was overwriting the observers with the last one !

config.active_record.observers = :popular_observer, :explorer_observer
欲拥i 2024-10-21 05:40:29

您是否忘记将其放入 Application 类中的 config/application.rb 中?

config.active_record.observers = :photo_observer

Did you forget to put it in config/application.rb, inside your Application class?

config.active_record.observers = :photo_observer
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文