Если базы данных точно так же (данные не требуют пользовательской обработки) и не слишком много записей, вы можете сделать это (что позволяет для внешних ключей):
Непроверенные .. . Но вы получите идею
#All models and their foreign keys
tales = {Patients => [:doctor_id, :hospital_id],
Doctors => [:hospital_id],
Hospitals}
ActiveRecord::Base.establish_connection :development
max_id = tables.map do |model|
model.maximum(:id)
end.max + 1000
tables.each do |model, fks|
ActiveRecord::Base.establish_connection :development
records = model.find(:all)
ActiveRecord::Base.establish_connection :production
records.each do |record|
#update the foreign keys
fks.each do |attr|
record[attr] += max_id if not record[attr].nil?
end
record.id += max_id
model.create record.attributes
end
end
Если у вас есть много записей, вы, возможно, придется часть этого как-то ... сделать это в группах 10k или что-то.
Какой двигатель базы данных вы используете? Также (у меня мало опыта Rails), Rails назначает идентификаторы для новых записей или делает это с помощью механизма базы данных? – Neall 2008-10-03 23:55:40
В Rails идентификаторы назначаются базой данных с использованием типа поля последовательности или автоинкремента. – hectorsq 2008-10-04 00:03:55