web-dev-qa-db-fra.com

Supprimer l'objet de has_many mais ne supprimez pas l'enregistrement d'origine dans Rails?

J'ai ceci:

Post.paragraphs << new_paragraph

Et je dois supprimer le paragraphe par id = 3, donc ce qui suit supprime complètement l'enregistrement:

Post.paragraphs.find(paragraph_id).destroy
# or
Post.paragraphs.find(paragraph_id).delete

J'ai juste besoin de supprimer un paragraphe de l'association has_many. J'ai essayé d'utiliser delete et destroy. Les deux méthodes suppriment complètement les enregistrements des tables associées. Comment puis-je simplement les retirer du "conteneur"?

23
valk

Vous ne devez pas utiliser la méthode delete sur l'objet Paragraph, mais utiliser à la place la méthode delete de la relation paragraphs, comme ceci:

post.paragraphs.delete(Paragraph.find(paragraph_id))
49
Baldrick