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'也看看它是否會有所幫助。

相關問題