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