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