Nếu cơ sở dữ liệu của bạn là hoàn toàn giống nhau (các dữ liệu không đòi hỏi chế biến tùy chỉnh) và không có quá nhiều hồ sơ, bạn có thể làm điều này (cho phép cho các phím nước ngoài):
chưa được kiểm tra .. . Nhưng bạn sẽ có được ý tưởng
#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
Nếu bạn có rất nhiều hồ sơ bạn có thể phải phần này ra bằng cách nào đó ... làm điều đó trong nhóm của 10k hoặc một cái gì đó.
Nguồn
2008-10-04 06:26:35
Bạn đang sử dụng công cụ cơ sở dữ liệu nào? Ngoài ra (tôi không có nhiều trải nghiệm Rails), Rails có gán các id cho các bản ghi mới hoặc không làm cho cơ sở dữ liệu làm việc đó? – Neall
Trong Rails, các id được chỉ định bởi cơ sở dữ liệu bằng cách sử dụng một loại trường tự nhiên hoặc chuỗi số nguyên tự động. – hectorsq