chamnap/active_record_uuid

View on GitHub
lib/active_record_uuid/rails/db.rake

Summary

Maintainability
Test Coverage
namespace :db do
  task :add_primary_keys => :environment do
    Dir["#{Rails.root}/app/models/**/*.rb"].each { |path| require path }
    ActiveRecord::Base.descendants.each do |model|
      next if model.abstract_class
      
      add_primary_key(model.table_name, model.primary_key)
    end
  end
  
  task :add_primary_key, [:model_name] => :environment do |t, args|
    model = Object.const_get(args.model_name)
    
    add_primary_key(model.table_name, model.primary_key)
  end
  
  private
  def add_primary_key(table_name, primary_key)
    begin
      ActiveRecord::Base.connection.execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{primary_key});"
    rescue => e
      p e
    end
  end
end