Je crée des SNS comme Twitter et Fb. J'ai ajouté un bouton de suppression à la fonction de publication ... ** Je ne peux pas supprimer la publication! !! ** **
Plus en détail, vous ne pouvez supprimer qu'un article. Publier une photo dans un article (uniquement si elle est divisée en un modèle d'article et un modèle d'image) Si vous commentez un message, vous ne pourrez pas le supprimer. ..
** [Caractères d'aujourd'hui] ** (Parent) post model → model pour enregistrer les posts Modèle d'image (enfant) → Un modèle qui enregistre les images associées aux articles (Enfant) modèle de commentaire → Modèle pour enregistrer les commentaires pour les articles
En d'autres termes, si une valeur est saisie dans le ** modèle enfant (modèle d'image, modèle de commentaire) ** imbriqué dans le ** modèle de publication **, l'enregistrement de publication ne peut pas être supprimé.
Jetons un coup d'œil au code réel.
post.rb
class Post < ApplicationRecord
belongs_to :user
has_many :comments
has_many :images
end
C'est une association post-modèle non conventionnelle. Cependant, s'il est laissé tel quel, le modèle parent ne peut pas être effacé lorsqu'une valeur est entrée dans le modèle enfant. Parce que si le parent disparaît, ** le parent de l'enfant disparaîtra **. .. C'est naturel lol
En d'autres termes, lorsque vous supprimez un parent, vous pouvez également définir l'enfant à supprimer **.
Définissons ** "dependant :: destroy" ** dans le modèle. dépendant ... Traduit, c'est "dépendant". Je pense que c'est facile d'obtenir une image.
Le modèle défini au moment de l'association sera supprimé lorsque la classe sera supprimée. Je ne sais pas ce que vous dites, je vais en fait l'écrire ci-dessous.
post.rb
class Post < ApplicationRecord
belongs_to :user
has_many :comments, dependent: :destroy
has_many :images, dependent: :destroy
end
Avez-vous compris d'une manière ou d'une autre? Vous avez défini le ** modèle d'image ** et le ** modèle de commentaire ** dans la ** classe Post **. Lorsque le modèle de publication (publication) est supprimé, le modèle (image, commentaire) pour lequel ** dependant :: destroy ** est défini dans l'association est également supprimé.
Il y a quelque chose dont je voudrais que vous soyez conscient à ce sujet. En fait, ce ** depend :: destroy ** n'est pas un paramètre pour supprimer les modèles enfants.
Par exemple, écrivons ce qui suit dans le modèle de commentaire.
comment.rb
belongs_to :post, dependent: :destroy
Si cela se produit, si vous supprimez le commentaire, ** le message sera également supprimé **.
Je vais le répéter. ** Les modèles configurés au moment de l'association seront supprimés lorsque la classe est supprimée. ** **
Merci d'avoir lu ma pauvre explication jusqu'au bout. Si vous avez des erreurs ou des suppléments, je vous serais reconnaissant de bien vouloir commenter.
De plus en plus.
Recommended Posts