2012-10-31 8 views
5

W naszej aplikacji zastąpiliśmy metodę niszczenia ActiveRecord, aby nasze rekordy nie zostały usunięte (aby użytkownik mógł cofnąć usunięcie). Tak:Wyzwalanie zależne:: niszczenie z pominiętą metodą niszczenia

def destroy 
    self.is_deleted = true 
    self.save 
    freeze 
end 

Jednak wydaje się, że wyłączona zależny zniszczyć nasze has_many relacji. Innymi słowy, jeśli destroy jest wywoływany na obiekcie nadrzędnym, obiekty podrzędne has_many nie ulegają zniszczeniu (nie są usuwane, tj. SQL 'DELETE...', ani nie zastępuje się destroy - metoda nazywana).

Jak wyzwalać zniszczenie obiektów podrzędnych.

Dzięki!

Odpowiedz

6

Musisz wywołać funkcję oddzwaniania.

def destroy 
    self.is_deleted = true 
    self.save 
    run_callbacks :destroy 
    freeze 
end 
+0

Dzięki! Właśnie tego mi brakowało. :) –