diff options
| -rw-r--r-- | db/migrate/20150425164647_remove_duplicate_tags.rb | 16 | 
1 files changed, 16 insertions, 0 deletions
| diff --git a/db/migrate/20150425164647_remove_duplicate_tags.rb b/db/migrate/20150425164647_remove_duplicate_tags.rb new file mode 100644 index 00000000000..1a9152cb965 --- /dev/null +++ b/db/migrate/20150425164647_remove_duplicate_tags.rb @@ -0,0 +1,16 @@ +class RemoveDuplicateTags < ActiveRecord::Migration +  def up +    select_all("SELECT name, COUNT(id) as cnt FROM tags GROUP BY name HAVING COUNT(id) > 1").each do |tag| +      duplicate_ids = select_all("SELECT id FROM tags WHERE name = '#{tag["name"]}'").map{|tag| tag["id"]} +      origin_tag_id = duplicate_ids.first +      duplicate_ids.delete origin_tag_id + +      execute("UPDATE taggings SET tag_id = #{origin_tag_id} WHERE tag_id IN(#{duplicate_ids.join(",")})") +      execute("DELETE FROM tags WHERE id IN(#{duplicate_ids.join(",")})") +    end +  end + +  def down +     +  end +end | 
