استخدام سياسات Pundit لإدارة المعاملات المسموح بها افتراضيًا ولكل إجراء
لإدارة المعاملات المسموح بها، يمكنكم إضافة permitted_attributes وpermitted_attributes_for_#{action} في السياسات، على سبيل المثال:
استخدام `requestSubmit` لإرسال النماذج مع Turbo
يستمع Turbo إلى أحداث submit على النموذج. لذلك استخدموا دائمًا requestSubmit لإرسال النموذج عبر JS.
تجاهل الـ gems المجمّعة في Rubocop وESLint ضمن GitHub Actions
غالبًا ما تثبّت مشاريع Rails الـ gems في مجلد vendor ضمن GitHub Actions، كي نتمكن من تخزينها مؤقتًا للتشغيلات المتتالية.
Rails 6 وRuby 3 وBootstrap 5 وHotwire
هذا امتداد لمقالة مدونة Bootrails مع إضافة Hotwire إليها: أحدث الأدوات الرائعة (حتى وقت كتابة هذا TIL):
ترويسة Cache-Control في Rails
لضبط ترويسات cache-control للأصول الثابتة واستخدام CDN على Heroku:
إصلاح الإدخال في rails console على Heroku
إذا اضطررتم إلى لصق عدد كبير من الأسطر في rails console على Heroku (أو في أي مكان آخر)، فقد تواجهون مشكلة تداخل الأسطر بعضها في بعض.
معرّف فريد لعناصر DOM في Rails
يوفّر Rails كثيرًا من الـ view helpers الرائعة، ومنها dom_id:
إضافة أنواع جديدة إلى واجهة attributes API في Rails 5
تتيح لنا واجهة attributes API في Rails 5 بناء كائنات النماذج (form objects) بسهولة كبيرة.
إرفاق ملف بـ ActiveStorage من دون HTTP
إذا أردتم إرفاق ملف أنشأتموه على القرص أو نزّلتموه من رابط أرسله المستخدم، يمكنكم فعل ذلك على النحو التالي.
إنشاء Hash من Enumerable (Rails 6.0)
دالة جديدة تتيح لكم إنشاء Hash من Enumerable:
إنشاء ترحيلات قابلة للتكرار بأمان (Idempotent Migrations)
عندما تكتبون ترحيلات تحذف بيانات أو هياكل، استخدموا if_exists: true عند حذف جدول، وتحققوا من وجود الجدول عند إضافة عمود أو حذفه…
كيف تكتشفون الكائنات المتضخمة (God Objects) في مشروعكم (Rails)
من المجلد الجذر لمشروعكم، انتقلوا بالأمر cd إلى app/models (من سطر الأوامر طبعًا)، ثم شغّلوا wc -lw * | sort -u
نماذج HTML ترسل البيانات إلى action مختلف
أعرف منذ زمن طويل أنه يمكن إرسال قيم عبر أزرار الإرسال، بحيث تعرفون أي زر استُخدم لإرسال النموذج، مثلًا.
إذا أردتم تجاوز ترتيب سبق تعيينه
إذا أردتم تجاوز ترتيب سبق تعيينه (حتى لو كان عبر default_scope)، فاستخدموا reorder() بدلًا من ذلك.
تقييد عدد السجلات في ارتباطات has_many
تقييد عدد السجلات في ارتباطات has_many
عرض أسماء النماذج في تطبيقكم
ملاحظة: يقلّل RUBYOPT=-W0 المخرجات الزائدة عند تشغيل أوامر rails، لأنه يكتم التحذيرات.
دوال Postgres والاستعلامات غير القابلة للفهرسة (Non-sargable)
قد يؤدي استخدام دوال postgres داخل عبارة where إلى جعل الاستعلام non-sargable، أي غير قادر على الاستفادة من الفهارس.
استخدام UPDATE مع Join في PostgreSQL
يوضح هذا الاستعلام كيفية استخدام صيغة UPDATE مع join في PostgreSQL لتحديث البيانات في جدول بناءً على قيم في جدول آخر. على سبيل المثال:
استخدام scope مع or في Rails
scope :human, -> { user.or(author) } scope :terminator, -> { admin.or(robot) } `
عرض TODO والملاحظات الأخرى في تطبيق Rails
هل تعلمون أنه يمكنكم عرض جميع ملاحظات TODO وOPTIMIZE وFIXME في تطبيق Rails باستخدام rails notes؟
وسم سجلات Rails بمعلومات مفيدة
تعرّفت للتو على السجلات الموسومة (tagged logging) في Rails. هل تعلمون أنه يمكنكم وسم السجل باستخدام
استخدام minItems وmaxItems في مخططات JSON للمجموعات
لجعل مخططات JSON الخاصة بالمجموعات أكثر موثوقية، استخدموا minItems وmaxItems حتى تثقوا بواجهة API الخاصة بكم.