Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
BeitragVerfasst: 05 Mär 2012, 11:17 
Offline
Meister

Registriert: 10 Dez 2009, 14:39
Beiträge: 212
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 :oops:


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: