2009-04-16 14 views
2

aktualisieren ich für die Benutzerautorisierung mit zwei ActiveRecords ein einfaches Modell bin mit User und Role User und Role haben eine HABTM Beziehung zueinander.Active nicht HABTM Beziehung

Ich habe versucht, eine Benutzeroberfläche für die Zuweisung von Rollen an Benutzer mit einfachen Kontrollkästchen zu erstellen - genau wie in Railscasts Episode #17.

Mein Problem ist, dass weder User#new noch User#update_attributes die durch meine Form vorgelegt Parameter verwenden, um die Beziehung zwischen dem User Objekt und seinen Rollen zu aktualisieren. params[:user][:role_ids] enthält die korrekten Werte. Aber das Aufrufen von @user.roles direkt nach User.new(params[:user]) oder @user.update_attributes(params[:user]) gibt ein leeres Array zurück.

manuell Rollen mit @user.roles oder @user.role_ids Arbeiten zuweisen, aber nicht die „Magie“ innerhalb User#new oder User#update_attributes.

Irgendwelche Ideen?

+0

Können Sie Ihren Controller veröffentlichen und Code anzeigen? –

Antwort

8

Die Wahrscheinlichkeit ist hoch, dass Sie in Ihrem Benutzermodell entweder attr_accessible oder attr_protected aufrufen, wodurch role_ids vor einer Massenzuweisung geschützt ist.

Wenn Sie möchten, aktualisieren Rollen über Massenzuordnung Betreiber wirklich, fügen Sie einfach

attr_accessible :role_ids 

zu Ihrem Modell. Ich empfehle Ihnen jedoch, zuerst http://railspikes.com/2008/9/22/is-your-rails-application-safe-from-mass-assignment zu lesen, nur um alle möglichen Probleme der Massenzuweisung zu kennen.

+1

Vielen Dank. Ich habe es gestern gelesen, habe es aber beim Erstellen meiner Modelle verpasst. – Koraktor