19-02-2010, 08:11 PM
(19-02-2010, 07:27 PM)Tho a écrit : Effectivement, même si je comprends pas tout, n'ayant jamais vu de ruby auparavant, c'est plutôt intéressant comme solution. Mais lorsque tu as plusieurs niveaux d'accès pour un client (par exemple, quelqu'un qui aurait acheté un compte "plus" qui lui permet d'accéder à des prix plus avantageux), tu gères ça comment ?
Plutôt pas mal.
Pour utiliser les filtres, j'ai plusieurs possibilités :
- Si je suis un gros bourrin, je mets mon filtre check_authorization directement en before_filter sur mon ApplicationController. Note que ça risque de bloquer tout l'application puisque ça empêche d'accéder aux pages d'authentification, la solution est alors d'enlever le filtrer pour les actions new (le formulaire) et create (la page d'action du formulaire) dans le contrôleur qui gère l'authentification (UserSessionsController).
- Moins bourrin : spécifier le filtre pour certains contrôleurs.
Donc si je veux que ma page soit accessible à un compte payant, je peux avoir plusieurs approches :
Si j'ai des pans entiers de sites dont l'accès est restreint, je crée un contrôleur PremiumUsersController (qui hérite de ApplicationController) qui contiendra un filtre pour jeter une exception personnalisée genre (NotPremiumMemberError) qu'ApplicationController gérera. Tu peux voir ce genre de chose dans l'article "Espace d'administration" que j'ai écrit sur le forum (cf. ma signature).
Si la restriction est plus fine : genre seuls les premiums peuvent acheter telle ou telle unité, j'ai juste à lancer une exception UnitForPremiumUsersOnlyError quand l'utilisateur tente d'acheter une telle unité.
(19-02-2010, 07:27 PM)Tho a écrit : Exécuter des actions du contrôleur dans le modèle, ou faire des vérifications dans la vue, ce genre de choses... Enfin, je crois que je n'aime pas MVC parce qu'il m'avait fait peur à première vue (c'était y'a quasiment un an). Mais si ce que je fais y ressemble, j'irais y rejeter un oeil, ça doit pas être si compliqué que ça...
Moralité : ne pas faire coder des endives ! Et lire la documentation.
T'inquiète, les implémentations de MVC t'empêchent de faire la majorité des bêtises.
C'est clair que MVC c'est flippant au début.
Bon allez, go go Ruby on Rails (ou Symfony, si vraiment tu veux rester sur PHP :p) !
Sephi-Chan