2017-05-04 4 views
0

Ich habe zwei Modelle. Das erste ModelA ist das übergeordnete Element von ModelB. dh ModelA hat viele ModelB. [Wenn MODELA zerstört wird, alle abhängigen Modell B ist wird auch durch zerstört abhängig zerstören Jetzt habe ich acts_as_paranoid Umfang: ModelAacts_as_list mit Paranoia Edelstein

Damit habe ich auch für beide Modelle A & B.

einrichten acts_as_paranoid Wenn ich jetzt ModelA zerstöre, möchte ich nicht, dass die Callbacks in ModelB aufgerufen werden, wenn ModelB-Records zerstört werden.

Insbesondere hat ModelB etwas namens position als Attribut, das aktualisiert wird, wenn ModelA die Paranoia zerstört, wodurch sich das Positionsattribut von ModelB ändert. Ich möchte die Position nicht ändern, damit ich das ModelA mit den gleichen Datensätzen und Eigenschaften für ModelB wiederherstellen kann, die vorher dort waren.

Danke.

+0

Können Sie Ihren Modellrückruf teilen? –

+0

Der Callback wird implizit von acts_as_list aufgerufen, wenn destroy in modelB aufgerufen wird. https://github.com/swanandp/acts_as_list/blob/master/lib/acts_as_list/active_record/acts/list.rb Hier wird implizit die Funktion 'decrement_positions_on_higher_items' aufgerufen, welche die Position aller nachfolgenden modelB records um 1 –

+0

This sollte sich als nützlich erweisen, vorübergehend zu deaktivieren https://github.com/swanandp/acts_as_list/blob/master/README.md#disabling-temporarily –

Antwort

0

Gemäß der readme

ModelB.acts_as_list_no_update do 
    modela_instance.destroy 
end 

Diese funktionieren sollte. Ich wünschte, ich könnte es testen, leider nicht so eingerichtet. Lassen Sie mich wissen, wenn irgendwelche Probleme. Hoffe, es hilft ..


Update:-Syntax, die für diesen Fall wie in den Kommentaren gearbeitet.

ModelB.acts_as_list_no_update([ModelB]) do 
    modela_instance.destroy 
end 
+0

Hi Farhan, Das hat eigentlich mit kleinen Änderungen funktioniert. Ich musste die acts_as_list auf die neueste Version aktualisieren. ModleB.acts_as_list_no_update [ModelB] {} –

+0

@AdilHussain Ich würde mich über eine Antwort freuen und/oder eine Antwort akzeptieren, da es funktioniert. –

+0

@Farhan, Tut mir leid, ich habe das gerade vergessen. Danke für deine Antwort. :) –

Verwandte Themen