سؤال

أقول لدي المستخدم نموذج التعليمة البرمجية التالية في المستخدم.rb:

before_create :create_dependencies
after_create :build_inbox

وأنا أيضا لدي المستخدمين.yml مع مجموعة من المستخدم المواعيد المحددة في ذلك.

عند تشغيل أشعل النار db:المباريات:الحمل ، فإنه لا يبدو أن تؤدي إلى رد.

  1. هذا كيف ومن المتوقع أن تعمل ؟ إذا كان الأمر كذلك, لماذا تم تصميم هذه الطريقة ؟
  2. هل هناك طريقة لإجبار اثار من رد عند التحميل المباريات ؟
هل كانت مفيدة؟

المحلول

هذا كيف ومن المتوقع أن تعمل ؟ إذا لماذا تصميم هذه الطريقة ؟

نعم, تركيبات لا تستخدم الاسترجاعات.أفترض أن هذا هو لأسباب تتعلق بالأداء.فمن أسرع في تحميل البيانات مباشرة في قاعدة البيانات دون إنشاء النموذج.

هل هناك طريقة لإجبار اثار من رد عند التحميل المباريات ؟

لا أعرف.لديك عدة خيارات.واحد هو بناء التجهيزات الخاصة بك كما لو كان الاستدعاء بالفعل تشغيلها.هذا هو يدويا إنشاء البيانات أن رد شأنه.على سبيل المثال, إذا كان لديك رد الذي تجزئات كلمة مرور المستخدم سوف تحتاج إلى تجزئة كلمة المرور يدويا ثم متجر تجزئة في المباراة.

الحل الثاني (ويوصى بشدة!) هو استخدام المصانع.مصانع هل الزناد رد و تسمح لك باستخدام الظاهري الصفات ، إلخ.هذا هو لأنها لا مثيل النموذج في كل مرة.واحد شعبية جوهرة فتاة المصنع.آخر محاولة الماكنه.كما خلقت Railscasts الحلقة عن هذا الموضوع.

نصائح أخرى

لدي هذه المشكلة أيضا.لدينا التطبيق بحساب بعض المجاميع before_save لذلك لا يجب أن يتم على الطاير.يجعل التقارير أسرع و يقطع بضع ينضم على بعض التقارير.

في اختبارات تلك الكائنات نحن يدويا تشغيل رد مثل هذا:

before do
  order.perform_callbacks
end

هذا جيد لأنه لا يعمل في كل وقت حتى اختبارات أخرى لا تعاني.

نحن نستخدم minitest والتجهيزات راجع للشغل.

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