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