Hallo,
da aktuell das Theman
attr_accessible diskutiert wird und ich ebenfalls schon mit diesem Problem konfrontiert war, wollte ich mal fragen, wie Ihr das macht.
Es geht um die Massenzuweisung von Attributen aus HTML-Forms und deren Authorisierung im Kontext der Nutzerrolle. Nachfolgendend sind zwei Wege aufgezeigt (mal unabhängig von Gems wie CanCan):
Mehr dazu
findet sich auch hier.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
# so macht es DHH, er geht über den Controller class PostsController < ActionController::Base def create Post.create(post_params) end def update Post.find(params[:id]).update_attributes!(post_params) end
private def post_params params[:post].slice(:title, :content) end end
|
1 2 3 4 5 6 7 8 9 10 11
|
# und so kann man die Integritätsprüfung beim Model belassen class PostsController < ActionController::Base def create Post.create(params[:post], :as => current_role) end
def update @post = Post.find(params[:id]) @post.assign_attributes(params[:post], :as => current_role).save! end end
|
Ich selbst tendiere dazu, die Validitätsprüfung dem Model zu überlassen, da da ja auch die restliche Validierung hinterlegt ist. DHH sagt, das Prüfen (und Verwerfen) von Attr. abhängig vom Userkontext ist Controllersache. Ich habe allerdings mit der 2. Variante noch nicht selbst gearbeitet (da sie mir bisher unbekannt war).
Wer hat den nun Recht bzw. wie macht Ihr das in Euren Projekten, wenn Ihr Validierung in Abhängigkeit von der Userrolle umsetzt?
_________________
Sorry, wenn ich doofe Fragen stelle, stehe noch ganz am Anfang
