Si vous voulez garder au simple association has_and_belongs_to_many
, vous pouvez ajouter ceci:
class Person < ActiveRecord::Base
has_and_belongs_to_many :posts
before_destroy { posts.clear }
end
qui effacera la table de jointure de toutes les entrées de cette person
. Note: Cela ne supprime que les enregistrements de la table de jointure, il ne détruit pas le posts
(ce qui est logique si c'est un has_and_belongs_to_many
bidirectionnel car le post
peut être référencé par d'autres persons
).
Mais deviner de vos noms (Person
et Post
) Je suppose que vous pouvez probablement vous en sortir avec un Person has_many :posts
et un Post belongs_to :person
auquel cas vous pouvez utiliser le :dependent => :destroy
sur l'association has_many
.
Pouvez-vous ajouter comment vous pourriez implémenter une action 'dependent:: destroy' sur une relation ** bidirectionnelle **' has_and_belongs_to_many' qui est liée au ** même modèle **? – JJD
Je ne suis pas sûr si la syntaxe était à l'origine comme cette réponse, mais je sais dans les rails 4, il est supposé être 'before_destroy {posts.clear}' – mkralla11
Merci, édité à être 'before_destroy' –