lib/active_record_uuid/rails/db.rake
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