diff --git a/app/models/concerns/tagger.rb b/app/models/concerns/tagger.rb
index 3127a067369d7ecd4bb9836c659e515e1790b6ae..6d9d3735a23ce7e10f35e9512217f08d684806f5 100644
--- a/app/models/concerns/tagger.rb
+++ b/app/models/concerns/tagger.rb
@@ -45,4 +45,10 @@ module Tagger
       Tagging.where(tagger: self, tag: tag, taggable: taggable).destroy_all
     end
   end
+
+  def update_tags(taggable, with: [])
+    old_tags = taggable.tags.map { |t| t.name }
+    tag(taggable, with: with - old_tags)
+    untag(taggable, with: old_tags - with)
+  end
 end