0

我期望的行爲是,當在實例上調用destroy時,該實例實際上不會被銷燬,但它只會被標記爲已銷燬。這需要滲透到任何模型關聯。Rails 3覆蓋銷燬無需取消回調並觸發ROLLBACK

在我不想實際銷燬的模型中,只是將它們標記爲已刪除,我有一個deactivated字段。

從我能告訴< v3.0.0這樣做的方法是覆蓋destroy_without_callbacks(這就是ActsAsParanoid的做法),但是該方法在3.0.0中不再存在,再加上我對重寫私人方法。

我也嘗試過實現回調,但是根據docs回調中所做的任何更改都是交易的一部分,因此也會回滾。

我的回調看起來像:

after_destroy :mark_deactivated 

    def mark_deactivated 
    if self.respond_to?(:deactivated) then 
     self.deactivated = DateTime.now 
     self.save 
     false 
    else 
     true 
    end 
    end 

如何防止我的紀錄的實際破壞沒有停止回調,並有我的變化回滾?

回答