20090312194159_add_projects_trackers_unique_index.rb
21 lines
| 605 B
| text/x-ruby
|
RubyLexer
|
r2512 | class AddProjectsTrackersUniqueIndex < ActiveRecord::Migration | ||
def self.up | ||||
remove_duplicates | ||||
add_index :projects_trackers, [:project_id, :tracker_id], :name => :projects_trackers_unique, :unique => true | ||||
end | ||||
def self.down | ||||
remove_index :projects_trackers, :name => :projects_trackers_unique | ||||
end | ||||
# Removes duplicates in projects_trackers table | ||||
def self.remove_duplicates | ||||
Project.find(:all).each do |project| | ||||
ids = project.trackers.collect(&:id) | ||||
unless ids == ids.uniq | ||||
project.trackers.clear | ||||
project.tracker_ids = ids.uniq | ||||
end | ||||
end | ||||
end | ||||
end | ||||