ActsAsTaggableOn не имеет хорошего способа сделать это встроенным (что я могу найти). Вот как я это сделал:
Сначала найдите теги, которые вы хотите удалить. Это должно быть Array
или ActsAsTaggableOn::Tag::ActiveRecord_AssociationRelation
Если вы внедрили acts_as_tagger
:
tags = @user.owned_tags.where(name: my_array_of_tag_names)
Если вы хотите найти теги у всех владельцев (или не используете acts_as_tagger
):
tags = ActsAsTaggableOn::Tag.where(name: my_array_of_tag_names)
Затем вы просматриваете теги, находите все теги и delete
их, а затем, наконец, delete
тег. (Обратите внимание, что destroy
не будет работать в этом случае)
tags.each do |tag|
ActsAsTaggableOn::Tagging.where(tag_id: tag.id).delete_all
tag.delete
end