Mehrere before_filter Aussagen für correct_user und admin
Ich habe eine Ressource der Gruppe, die ich ' m, die versuchen, mit der richtigen Berechtigungen.
Die Genehmigung Logik, die ich bin versucht zu implementieren, ist dies:
- Nur Mitglieder der Gruppe sollten in der Lage sein, um Ihre Gruppe.
- Ein admin kann anzeigen alle - Gruppe, sowie andere Maßnahmen zu treffen.
Ich bin versucht, dies zu tun mit den folgenden before_filter Aussagen in der Gruppe controller:
before_filter :signed_in_user
before_filter :correct_user, only: :show
before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]
Correct_user funktioniert, wie ich überprüft haben, dass nur Mitglieder der Gruppe können Ihre Gruppe. Jedoch, was ich will, geschehen wird für den admin: - show-Klausel außer Kraft setzen, so dass ein admin kann anzeigen einer Gruppe. Derzeit ist das nicht arbeiten. Ich vermute ich habe etwas falsch hier mit meinem filter bestellen und Optionen.
Kann mir jemand sagen, wo ich falsch gegangen?
BEARBEITEN
Hinzufügen meine Methode code pro Amar ' s Wunsch:
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
- Versuchen admin_user vor dem filter oben correct_user oder in show-action make-Bedingung für den admin-Benutzer und andere
- Dank Amar. Ich habe versucht, den admin_user oben genannten filter correct_user aber das hat nicht zu beheben. Ich könnte die Bedingung in der Aktion, wollen aber sehen, ob es einen Weg, es zu tun mit before_filter.
- Auf eine weitere Untersuchung mit der Art und Weise, ich habe es geschrieben über dem filter ist, dass der Benutzer werden, sowohl als admin UND ein correct_user, um die Gruppe. Ich will es zu sein, ODER
- U kann die debug Methode mit debugger oder hebeln Sie bekommen faire Idee, was falsch sein könnte, die Sie tun, Recht oder kann u post code, so kann ich in Sie Graben.
- Zu schätzen Ihre Hilfe, Amar. Gerade gebucht und die Methode code oben.
- Ok,also beim admin melden und er wird nicht Mitglied in diesem Fall leitet also für show-Methode können Sie erstellen, die folgende Methode
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update der correct_user Methode oder erstellen Sie eine andere Methode mit der folgenden definition, entfernen Sie anzeigen von anderen filtern, und fügen Sie before_filter mit der neuen Methode.