Lors de la suppression d'un modèle avec une clé externe dans Rails, j'ai eu du mal à l'implémenter simplement en écrivant le fichier de routage, de contrôleur et de vue, donc je vais le sortir.
Supposons que vous souhaitiez supprimer un modèle appelé item qui a item_purchase qui lie les données sur les achats de produits en tant que clé externe.
Cet item_purchase a un user_id qui est l'acheteur et un item_id qui est l'article acheté.
Ici, si vous supprimez simplement l'élément, il y aura un enregistrement dans item_purchase où seul item_id est manquant.
Par conséquent, lors de la suppression d'un article, nous le décrirons afin que l'enregistrement item_purchase associé lui-même puisse être supprimé.
Tout d'abord, ajoutons une description supplémentaire à l'association de modèle.
models/item.rb
has_one :item_purchase, foreign_key: :item_id, dependent: :destroy
models/item_purchase.rb
belongs_to :item, optional: true
Je ne le présenterai pas ici, mais comme l'utilisateur doit également être lié, n'oubliez pas de le décrire également.
Après cela, vous pouvez définir la méthode de destruction dans le contrôleur comme d'habitude.