Chris@0: class AddProjectsTrackersUniqueIndex < ActiveRecord::Migration Chris@0: def self.up Chris@0: remove_duplicates Chris@0: add_index :projects_trackers, [:project_id, :tracker_id], :name => :projects_trackers_unique, :unique => true Chris@0: end Chris@0: Chris@0: def self.down Chris@0: remove_index :projects_trackers, :name => :projects_trackers_unique Chris@0: end Chris@0: Chris@0: # Removes duplicates in projects_trackers table Chris@0: def self.remove_duplicates Chris@1464: Project.all.each do |project| Chris@0: ids = project.trackers.collect(&:id) Chris@0: unless ids == ids.uniq Chris@0: project.trackers.clear Chris@0: project.tracker_ids = ids.uniq Chris@0: end Chris@0: end Chris@0: end Chris@0: end