روبي كائن#معرف التحذيرات والسجل النشط
-
03-07-2019 - |
سؤال
نستمر في رؤية تحذيرات مثل ما يلي عندما ندير مواصفاتنا:
سيتم إهمال الكائن#المعرف ؛ استخدم 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