Nil dereference في PostGuardian can_delete_post

يحتوي PostGuardian.can_delete_post على إشارة إلى user مما يتسبب في تعطل عند استدعائه عندما لا يكون هناك مستخدم مسجل دخوله. يتم استدعاؤه من مكون إضافي لذلك ربما لا يحدث هذا في النواة في الوقت الحالي.

يحدث هذا هنا:

return true if user.in_any_groups?(SiteSetting.delete_all_posts_and_topics_allowed_groups_map)

الاقتراح هو إما استخدام عامل التنقل الآمن &. أو تغييره إلى return true if user && user.in_any_groups? ...

3 إعجابات

هل يمكن استخدام @system كمستخدم لهذا، بما أنه يجب أن يمتلك دائمًا الأذونات؟ (وهل لا يقوم core بذلك أيضًا؟)

لست متأكدًا من أنك تفهم.

لا توجد مشكلة في عدم وجود مستخدم (و “عدم وجود مستخدم” يجب أن يساوي “عدم وجود أذونات”). المشكلة هي أن الكود يفترض وجود مستخدم دون التحقق، لذا فإنه يحاول معرفة ما إذا كان “لا شيء” موجودًا في أي مجموعات.

إعجاب واحد (1)