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