के लिए एकाधिक से पहले_फिल्टर स्टेटमेंट्स मेरे पास एक समूह संसाधन है जिसे मैं उचित प्राधिकरणों के साथ स्थापित करने का प्रयास कर रहा हूं।correct_user और admin
प्राधिकरण तर्क मैं लागू करने के लिए कोशिश कर रहा हूँ यह है:
- केवल समूह के सदस्यों को उनके समूह को देखने के लिए सक्षम होना चाहिए।
- कोई व्यवस्थापक किसी भी समूह को देख सकता है, साथ ही अन्य कार्रवाइयां भी ले सकता है।
मैं समूह नियंत्रक में निम्नलिखित before_filter बयान के साथ यह करने के लिए प्रयास कर रहा हूँ:
before_filter :signed_in_user
before_filter :correct_user, only: :show
before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]
Correct_user काम करता है के रूप में मैं सत्यापित किया है कि केवल समूह के सदस्यों को उनके समूह को देख सकता। हालांकि, मैं जो करना चाहता हूं वह व्यवस्थापक के लिए है: इसे ओवरराइड करने के लिए खंड दिखाएं, ताकि कोई भी समूह किसी भी समूह को देख सके। वर्तमान में यह काम नहीं कर रहा है। मुझे लगता है कि मेरे फ़िल्टर ऑर्डरिंग और विकल्पों के साथ यहां कुछ गड़बड़ है।
क्या कोई मुझे बता सकता है कि मैं गलत कहां गया हूं?
संपादित
अमर के अनुरोध के अनुसार मेरी विधि कोड जोड़ना:
private
def correct_user
# User has to be a member to view
@group = Group.find(params[:id])
redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
कोशिश admin_user व्यवस्थापक उपयोगकर्ता और अन्य – Amar
धन्यवाद अमर के लिए सशर्त बनाते हैं। मैंने admin_user फ़िल्टर को correct_user से ऊपर डालने का प्रयास किया लेकिन उसने इसे ठीक नहीं किया। मैं इस स्थिति को कार्रवाई में डाल सकता हूं लेकिन देखना चाहता हूं कि पहले_फिल्टर के साथ ऐसा करने का कोई तरीका है या नहीं। – pejmanjohn
फ़िल्टर के ऊपर लिखे गए तरीके से आगे के निरीक्षण पर उपयोगकर्ता को समूह देखने के लिए उपयोगकर्ता और व्यवस्थापक और एक सही_यूसर होना आवश्यक है। मैं चाहता हूं कि यह हो या – pejmanjohn