From 3467868607aa7e68e083c08066d46ecf83a9ca1d Mon Sep 17 00:00:00 2001 From: chris Date: Thu, 18 Jul 2013 14:05:21 +0800 Subject: [PATCH] Fix missing tagged_ids in some taggable objects and add a rake task for it --- lib/orbit_tag/taggable.rb | 4 +--- lib/tasks/migrate.rake | 12 ++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/orbit_tag/taggable.rb b/lib/orbit_tag/taggable.rb index fc2d79d90..6afe7702e 100644 --- a/lib/orbit_tag/taggable.rb +++ b/lib/orbit_tag/taggable.rb @@ -43,6 +43,7 @@ module OrbitTag def tags=(tag_ids) ids = [tag_ids].flatten tag_ids.delete('') + self.tagged_ids = tag_ids ids = self.taggings.blank? ? [] : self.taggings.map{|t| t.tag.id} tag_ids.each do |tag_id| unless ids.include? tag_id @@ -58,9 +59,6 @@ module OrbitTag def tag_ids=(ids) self.tags = ids - ids = [ids].flatten - ids.delete('') - self.tagged_ids = ids end private diff --git a/lib/tasks/migrate.rake b/lib/tasks/migrate.rake index 615b075fb..df31d40ab 100644 --- a/lib/tasks/migrate.rake +++ b/lib/tasks/migrate.rake @@ -310,4 +310,16 @@ namespace :migrate do Rake::Task["web_link_url:web_link_url_i18n"].execute end + task :fix_tagged_ids => :environment do + Tag.all.each do |tag| + tag.taggings.each do |tagging| + tagged_ids = tagging.taggable.tagged_ids + unless tagged_ids.include?(tag.id.to_s) + tagged_ids << tag.id.to_s + tagging.taggable.update_attribute(:tagged_ids, tagged_ids) + end + end + end + end + end