abhängig => auf „has_many durch“ Vereinigung zerstören
-
22-09-2019 - |
Frage
Offenbar abhängig => zerstören wird ignoriert, wenn auch die Verwendung von:. Durch Option
Also ich habe diese ...
class Comment < ActiveRecord::Base
has_many :comment_users, :dependent => :destroy
has_many :users, :through => :comment_users
...
end
... aber einen Kommentar zu löschen führt nicht in den zugehörigen comment_user Datensätze gelöscht zu werden.
Was ist der empfohlene Ansatz, dann für Kaskade Löschungen bei der Verwendung von: bis
Danke
Lösung
Scheinbar: abhängig wird nicht ignoriert
Das eigentliche Problem war, dass ich rief Comment.delete(id)
, die direkt auf den db geht, während ich jetzt Comment.destroy(id)
verwenden, die Lasten der Kommentar Objekt und Anrufe () auf sie zu zerstören. Dieser nimmt den :dependent => :destroy
und alles ist gut.
Andere Tipps
Die Lösung der ursprüngliche Plakat gültig ist, aber ich wollte nur darauf hinweisen, dass dies funktioniert, wenn Sie eine ID-Spalte für die Tabelle haben. Ich ziehe meine many-to-many-Tabellen nur die beiden Fremdschlüssel sein, aber ich musste meine „id: false“ entfernen aus der Migration Tabellendefinition zu löschen Arbeit kaskadieren. Diese Funktionalität wird definitiv nicht eine ID-Spalte auf dem Tisch überwiegt mit.
Wenn Sie eine polymorphe Vereinigung haben, sollten Sie das tun, was @blogofsongs sagte aber mit einem foreign_key Attribute wie folgt:
class User < ActiveRecord::Base
has_many :activities , dependent: :destroy, foreign_key: :trackable_id
end