Мы используем Rails 5.2.2.1 в качестве API с Vue для внешнего интерфейса.
A Post
has_many :tags
.A Post
также accepts_nested_attributes_for :tags, allow_destroy: true
.
При создании сообщения вы одновременно создаете теги, и это хорошо работает.Однако при редактировании тегов я сталкиваюсь с проблемой, при которой теги, которых нет в полезных данных обновления, не удаляются из базы данных.Вот пример того, что я ожидал:
# A Post has currently tags with ID 1, 2, and 3.
# This (pseudo) update payload is sent
{
tags_attributes: [
{
id: 1,
name: 'Tech'
},
{
id: 3,
name: 'Sports'
},
{
id: nil,
name: 'Science'
}
]
}
# The post's tag with an ID of 2 is not present in the update payload, so it should be automatically removed
# Since we're also passing up a new tag without an ID, this tag should be created
У меня есть решение, включающее _destroy: '1'
, но было бы предпочтительно, чтобы теги автоматически помечались для уничтожения на основе их присутствия в полезной нагрузке обновления.