سؤال

نستمر في رؤية تحذيرات مثل ما يلي عندما ندير مواصفاتنا:

سيتم إهمال الكائن#المعرف ؛ استخدم Object#Object_id

الكود المعني هو الوصول إلى معرف نموذج ActivereCord (وهو سمة على الجدول ، من الواضح ، بدلاً من معرف مثيل الكائن في Ruby VM).

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

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

المحلول

أفترض أنك تقوم بسخرية / قاذفة (لأنك ذكرت المواصفات).

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

في الحالات التي تتوقع فيها الوصول إلى معرف كائن ActivereCord الخاص بك ، أوصيك بالقيام بما يلي:

 mock("MyActiveRecordObject", :id => 1001)

نصائح أخرى

جرب استخدام [:id] بدلاً من .id

عندما ينحدر كائن من ActiveRecord::Base, ، دعوة إلى id يذهب إلى AR :: B's id الطريقة بدلاً من المنهكة Object.

هذا التحذير يعني عادة أن أحد كائناتي ليس ما أعتقده.

كائنك ليس في الواقع كائن AR ، عادة ما يشير إلى أن بعض استرداد البيانات قد فشل (Table.find_by_name('nonexistent name') سيعود nil). إذا كان كل ما تريد القيام به هو إغلاق التحذيرات المرئية ، فيمكنك إيقاف تشغيل whiny_nils في التكوين الخاص بك ، وإلا is_a? اختبر قبل محاولة الوصول إلى سمات الكائن والتعامل مع حالة الفشل بأمان.

The object#id warning only happen on regular ruby classes like NilClass. ActiveRecord::Base overrides object#id

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