المكان المناسب لاقتراح مسند صلاحيات؟

هذا ما تعلمته/استنتجته:

  • Guardian هو بالفعل الشيء الذي يغلف “ما يُسمح للمستخدم بفعله؟” (مثيل Guardian لديه مثيل User أيضًا.)
  • وبالتالي، فإن المكان المناسب لشرط الأذونات هو ببساطة كطريقة على Guardian (lib/guardian.rb).
    • إذا كانت الطريقة “هل يمكن للمستخدم القيام بـ Z لكائن Xxxx؟” فمن المحتمل أن تنتمي إلى أحد ملفات XxxxGuardian المختلطة (lib/guardian/...).
    • بخلاف ذلك، تذهب إلى التعريف الأساسي لـ Guardian.
  • يدير ApplicationController سمة guardian تعكس الطلب/العميل الحالي، ويوفرها للمسلسلات كـ scope الخاص بها، لذلك يتوفر Guardian الحالي عند الحاجة (باستثناء عندما لا يكون كذلك[1])
  • هناك أماكن لا يتوفر فيها Guardian جاهز، عادةً في مهمة خلفية يديرها النظام، ولكن إذا كان لديك مقبض على “مستخدم عامل” (على سبيل المثال، المستخدم المستلم، عند إنشاء إشعار بريد إلكتروني)، يمكنك إنشاء guardian مناسب في الوقت المناسب: Guardian.new(the_user).

  1. ↩︎