Ruby on Rails: Où pour définir des constantes globales?

Je suis juste de commencer avec mon premier Ruby on Rails webapp. J'ai un tas de différents modèles, vues, contrôleurs, et ainsi de suite.

Je suis désireux de trouver un bon endroit pour coller les définitions de vraiment constantes globales, qui s'appliquent à l'ensemble de mon ensemble de l'application. En particulier, ils s'appliquent à la fois dans la logique de mes modèles, et dans les décisions prises dans mes vues. Je ne peut pas trouver un endroit SEC pour mettre ces définitions où ils sont disponibles à la fois pour tous mes modèles et aussi dans tous mes points de vue.

Pour prendre un exemple concret, je veux une constante COLOURS = ['white', 'blue', 'black', 'red', 'green']. Il est utilisé partout, dans les deux modèles et points de vue. Où puis-je définir en un seul lieu, de sorte qu'il est accessible?

Ce que j'ai essayé:

  • Constante de la classe de variables dans le modèle.rb fichier qu'ils sont les plus associés avec, comme @@COLOURS = [...]. Mais je ne pouvais pas trouver une façon saine de le définir, de sorte que je peux écrire dans mon point de vue Card.COLOURS plutôt que quelque chose encombrants comme Card.first.COLOURS.
  • Une méthode sur le modèle, quelque chose comme def colours ['white',...] end - même problème.
  • Une méthode dans application_helper.rb - c'est ce que je fais jusqu'à présent, mais les aides ne sont accessibles que dans les vues, pas dans les modèles
  • Je pense que je pourrais avoir essayé quelque chose dans l'application.rb ou de l'environnement.rb, mais ceux-ci ne sont pas vraiment l'air de droite (et ils ne semblent pas non plus)

Est-il pas possible de définir n'importe quoi pour être accessible à la fois des modèles et des points de vue? Je veux dire, je sais modèles et points de vue doivent être distincts, mais sûrement, dans certains domaines, il y aura des moments dont ils ont besoin pour se référer à un même domaine spécifique de la connaissance?

  • double possible de Where/Comment le code des Constantes dans Rails 3
  • Je comprends que c'est VRAIMENT la fin, mais pour les autres lecteurs, je me demande pourquoi vous n'avez pas il suffit de définir dans votre modèle et l'utilisation de vos contrôleurs de les faire passer votre point de vue. De cette façon, vous auriez un nettoyeur de séparation des préoccupations, plutôt que de créer des dépendances entre contrôleur/modèle ET de la vue/point de vue.
  • Passer ces constantes dans chaque vue et d'assistance qui en a besoin? En d'autres termes, le contrôleur au courant de vues qui ont besoin de ce qui constantes? Cela ressemble plus à une violation de la MVC.
InformationsquelleAutor AlexC | 2010-11-05