我有一个Rails照片观察者模型,在删除照片后运行。如果相册中没有剩余照片,则相册未发布。这大部分时间都有效,但偶尔也不会触发,留下一张没有照片的已发布相册。我试过复制这个问题,但无济于事。我的观察者方法如下:
def after_destroy(photo)
album_photos = photo.photo_album.photos.published
if album_photos.count > 0
...
else
photo.photo_album.update_attribute(:published, false)
end
expire_cache_for(photo)
end
仅供参考 - 相册更新/保存观察者只有在将其发布状态更改为true时才会触发,因此不会发生任何事情。我曾多次尝试复制这个,但都无济于事。关于此删除也没有500错误。请注意我使用的是Passenger,我的照片存储在Amazon S3上。关于如何进行调试的任何想法?
答案 0 :(得分:0)
尝试在after_destroy回调中设置调试器或一些print语句。也许它有一些奇怪的计时问题,其中.count在被调用时还不是0,你永远不会知道。
我建议你潜入并仔细检查所有被执行的内容,有时看起来所有内容都是有序的(而且是逻辑的),除非你检查它。
答案 1 :(得分:0)
在我的制作应用程序中,我也注意到观察者有时不会开火。我一直无法复制它。好吧,有时它也会在开发中发生,但我通常都会确定这是因为奇怪的重装或延迟加载问题......
Rails 3,对吗? 你在application.rb中设置了它吗? config.active_record.observers = [:my_observer]
我正在我的application_controller顶部尝试require_dependency'my_observer'以查看它是否有帮助。