سؤال

لدي 4 عمليات ترحيل ذات صلة في تطبيق Rails الخاص بي:

تقوم أول 3 عمليات ترحيل بإنشاء جدول واحد لكل منها في self.up وإسقاطها في أساليب self.down الخاصة بها.

يقوم الترحيل الرابع بتشغيل مهمة Rake التي تقوم بتحميل البيانات إلى الثلاثة (في self.up).أفكر في ما يجب وضعه في self.down لهذا الترحيل لحذف الصفوف من الجداول الثلاثة؟

هل أفعل ذلك خطأ؟ربما كان ينبغي إنشاء ترحيل واحد حيث أقوم بإنشاء 3 جداول وتحميل البيانات في self.up وإسقاط جميع الجداول الثلاثة في طريقة self.down؟

هل كانت مفيدة؟

المحلول

هذا خطأ!

يجب استخدام عمليات الترحيل فقط لترحيل بياناتك نموذج ليس لك بيانات.

يضيف ريلز 2.3.4 "البذور".هذا ملف في db/seeds.rb يحتوي على رمز روبي "لتشغيل" قاعدة البيانات الخاصة بك.تعد هذه طريقة رائعة لإنشاء محتوى شبه ثابت لقاعدة بياناتك مثل الفئات أو جداول البحث أو حسابات المستخدمين.

يمكنك بعد ذلك تحميل البيانات الأولية بمهمة بسيطة

rake db:seed

نصائح أخرى

وليس هناك في الحقيقة طريقة صحيحة أو خاطئة للقيام بذلك. وبناء على ما قمت به، ينبغي للهجرة 4TH مجرد تفريغ البيانات في طريقة إلى أسفل. كل إلى أسفل فإنه يجب التراجع فقط تصرفات تصل.

وبالتأكيد ليس مطلوبا

وتحميل البيانات في الهجرة أن يخلق الجدول. إذا كان لديك 3 الجداول التي تخلق has_many أو belongs_to علاقات ثم فإنه من المنطقي أن وضع البيانات في ترحيل منفصلة حتى تتمكن من خلق علاقات وثم استخدامها في تحميل البيانات الخاصة بك.

وكل ذلك جانبا، وإذا كان لديك مهمة أشعل النار لتحميل البيانات، لماذا عناء مع الهجرة التي تدير هذه المهمة أشعل النار؟ فقط تأكد تشغيل جزء مهمة أشعل النار الخاص بك تثبيت، أو مجرد استخدام المهمة أشعل النار لتحميل أو تفريغ بعض البيانات المظاهرة.

وعموما أنا أحافظ الهجرات مخطط مركزة، وكنت وضعت أي تحميل البيانات في مهمة أشعل النار أدعو بشكل مستقل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top