Ich habe eine Rails-App mit einem Benutzermodell, das ein admin
-Attribut enthält. Es ist gesperrt mit attr_accessible
. Mein Modell sieht so aus:
Und so sieht meine Update-Methode in meinem Benutzer-Controller aus:
%Vor%Ich habe eine Hilfsmethode in meinem Anwendungscontroller, die die Rolle als Zeichenfolge zurückgibt:
%Vor% Ich habe auch config.active_record.whitelist_attributes = true
in config/application.rb
festgelegt.
Ich habe überprüft, dass die Methode current_user_role
den richtigen Wert basierend auf dem Administratorstatus des aktuellen Benutzers zurückgibt. Rails wirft keinen Massenzuordnungsfehler. Wenn ich jedoch versuche, den Administratorstatus eines Benutzers zu aktualisieren, während ich als Administrator angemeldet bin, führt Rails die Aktualisierung durch und ignoriert automatisch das admin
-Attribut. Das Hochziehen des Benutzerdatensatzes in der Rails-Konsole zeigt, dass der Datensatz nicht geändert wurde.
Ich habe das Gefühl, dass es ein Ruby- oder Rails-spezifisches Problem gibt, von dem ich keine Ahnung habe. Ich kann keine Informationen finden, um die Rolle dynamisch zu gestalten. Das Beste, was ich finden konnte, war das .
Es gab einen fehlerhaften attr_accessor: admin in meinem Modell, der von einem früheren Versuch übrig geblieben war, dies zum Laufen zu bringen. Ich habe es übersehen. Entfernen Sie es behoben.
Das Ergebnis ist, dass dies eine ziemlich einfache Möglichkeit ist, dynamische Rollen in Rails 3.2 zu verwenden.
Tags und Links ruby ruby-on-rails attr-accessible mass-assignment