Je travaille sur une application avec un certain nombre de modèles connexes et je voudrais entendre quelques opinions sur la meilleure façon d'organiser les contrôleurs.Comment organiser le contrôleur dans une application Rails moyennement grande?
Voici quelques options que je suis: envisageais
1) Espace de noms des contrôleurs. Ainsi, par exemple, ayez un répertoire controllers/admin et un répertoire controllers/public. Cela semble attrayant pour l'organisation, mais aussi parce qu'une seule ressource peut souvent avoir des actions qui peuvent raisonnablement appartenir à des répertoires différents (par exemple, l'action show est publique alors que l'action create est admin). Donc, cela signifierait de séparer certaines de mes ressources en deux contrôleurs distincts - un public, un administrateur. Cela semble mauvais.
2) Créer des ressources imbriquées. Je n'ai utilisé que de temps en temps des ressources imbriquées, ce qui n'est pas toujours clair pour moi quand il est préférable d'imbriquer des ressources plutôt que de passer explicitement les données dont vous avez besoin à travers les paramètres. Quelqu'un a-t-il des suggestions/exemples de la meilleure façon d'utiliser des ressources imbriquées? Quand est-ce une bonne idée? Quand est-ce une surpêche?
3) Laissez simplement les contrôleurs d'échafaudage par défaut seuls. Créez de nouvelles actions de collection/membre si nécessaire et utilisez avant les filtres pour définir les autorisations dans chaque contrôleur. Cela semble plus attrayant car cela permet de garder les choses simples d'avance. Mais je suis un peu nerveux à propos des choses qui deviennent désordonnées car certains des contrôleurs pourraient commencer à gonfler avec plusieurs nouvelles actions.
Si quelqu'un ayant de l'expérience dans la conception de grandes applications pouvait vous donner quelques conseils, cela aurait été grandement apprécié.
Génial. C'est exactement ce dont j'avais besoin. J'aime particulièrement l'idée d'utiliser des espaces de noms et d'hériter d'un contrôleur de base. En outre, je n'avais pas envisagé d'utiliser CanCan, mais je vais certainement y jeter un coup d'œil. Merci! –