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

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top