अपने डेटाबेस बिल्कुल एक जैसे हैं (डेटा कस्टम प्रसंस्करण की आवश्यकता नहीं है) और वहाँ भी कई रिकॉर्ड नहीं कर रहे हैं, तो आप ऐसा कर सकता है (जो विदेशी चाबी के लिए अनुमति देता है):
untested है .. । लेकिन आप विचार
#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 या कुछ और के समूह में करते हैं।
स्रोत
2008-10-04 06:26:35
आप किस डेटाबेस इंजन का उपयोग कर रहे हैं? इसके अलावा (मेरे पास बहुत रेल अनुभव नहीं है), क्या रेल नए रिकॉर्ड के लिए आईडी निर्दिष्ट करते हैं या डेटाबेस इंजन ऐसा करता है? – Neall
रेल में ids को अनुक्रम या autoincrement पूर्णांक फ़ील्ड प्रकार का उपयोग कर डेटाबेस द्वारा असाइन किया जाता है। – hectorsq