Удалить объект из has_many, но не удалять исходную запись в Rails?

У меня есть это:

Post.paragraphs << new_paragraph

И мне нужно удалить абзац с помощью id = 3, поэтому следующее полностью удалит запись:

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

Мне просто нужно удалить абзац из ассоциации has_many. Я попытался использовать delete и destroy. Оба метода полностью удаляют записи из связанных таблиц. Как я могу просто удалить их из "контейнера"?

Ответы

Ответ 1

Нельзя использовать метод delete для объекта Paragraph, но вместо этого используйте метод удаления отношения paragraphs, например:

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

Ответ 2

для удаления ассоциации вы можете попробовать:

Paragraph.find(paragraph_id).update_attribute :post_id, nil

но в этом случае у вас будет paragraph, у которого нет связанной записи (я не знаю об этом)