1

我有一个Rails照片观察者模型,在照片被删除后运行。如果相册中没有剩余照片,则该专辑未发布。这在大多数情况下都是有效的,但偶尔也不会触发,留下一张没有照片的已发布专辑。我试图复制这个问题,但无济于事。我的观察方法如下: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 

仅供参考 - 相册更新/保存观察者只有火灾,如果改变其发布的状态为真,所以没有出现在那里。我已经尝试过无数次复制这个,但都无济于事。这个删除也没有500个错误。请注意,我使用Passenger,我的照片存储在Amazon S3上。任何想法如何进行调试呢?

回答

0

尝试在after_destroy回调中设置调试器或某些打印语句。也许它有一些奇怪的计时问题,当.count被调用时,它还不是0,你永远不知道。

我建议你潜入并仔细检查一切被执行,有时它看起来像一切都是为了(和逻辑),除非你检查它。

0

在我的制作应用程序中,我也注意到观察者有时不会开火。我一直无法复制它。那么,有时它也发生在开发中,但我通常肯定这是因为奇怪的重新加载或延迟加载问题...

Rails 3,对吧? 你有它在你的application.rb? config.active_record.observers = [:my_observer]

我想在我的application_controller的顶部require_dependency'my_observer'也看看它是否会有所帮助。