Cet article utilise Ruby 2.6.5 installé sur macOS Catalina 10.15.6.
Nous avons créé trois modèles et la situation est la suivante.
Utilisateur / Utilisateur Rapport / Rapport Tableau d'association commentaire / rapport utilisateur
L'erreur suivante s'est produite lors de la suppression d'un rapport contenant des commentaires.
ActiveRecord::InvalidForeignKey in ReportsController#destroy Erreur de clé externe
Pensez à la solution à la cause.
Lors de la suppression d'un rapport, il est déterminé que la cause est que l'utilisateur dans la table de commentaires et la valeur d'id du rapport sont perdus. (En raison de contraintes clés externes) Je souhaite pouvoir supprimer des commentaires si l'utilisateur et l'ID de rapport ne sont plus associés.
dependent: :Décrivez la destruction dans le modèle utilisateur et le modèle de rapport.
Avec cette description, lorsque vous supprimez le modèle parent (rapport), vous pouvez également supprimer le "modèle enfant (commentaire)" associé au modèle parent ".
## Vérification
#### **`app/models/user.rb`**
```ruby
class User < ApplicationRecord
has_many :reports
has_many :comments, dependent: :destroy
end
app/models/report.rb
class Report < ApplicationRecord
belongs_to :user
has_many :comments, dependent: :destroy
end
Terminé sans incident! c'est tout. J'espère que cela aidera ceux qui ont des problèmes similaires ou qui se heurtent à un mur!
J'ai fait référence à ce qui suit, donc si vous voulez comprendre le contenu plus en profondeur, jetez un œil! https://qiita.com/Ushinji/items/650fa295a3054d2fe582 https://qiita.com/ITmanbow/items/2170ccaceafd5d401df8 https://qiita.com/Tsh-43879562/items/fbc968453a7063776637
Recommended Posts