Je commence tout juste ma première webapp Ruby on Rails. J'ai un tas de différents modèles, vues, contrôleurs, etc.
Je veux trouver un bon endroit pour coller des définitions de constantes véritablement mondiales, qui s'appliquent à l'ensemble de mon application. En particulier, ils s'appliquent à la fois dans la logique de mes modèles et dans les décisions prises selon mes vues. Je ne trouve aucun endroit SEC pour mettre ces définitions là où elles sont disponibles à la fois pour tous mes modèles et aussi dans toutes mes vues.
Pour prendre un exemple spécifique, je veux une constante COLOURS = ['white', 'blue', 'black', 'red', 'green']
. Ceci est utilisé partout, dans les modèles et les vues. Où puis-je le définir en un seul endroit pour qu'il soit accessible?
Ce que j'ai essayé:
- Variables de classe constantes dans le fichier model.rb auxquelles elles sont le plus associées, telles que
@@COLOURS = [...]
. Mais je ne pouvais pas trouver une manière saine de le définir afin que je puisse écrire dans mes vuesCard.COLOURS
plutôt que quelque chose de maladroitCard.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 assistants ne sont accessibles que dans les vues, pas dans les modèles
- Je pense que j'ai peut-être essayé quelque chose dans application.rb ou environment.rb, mais ceux-ci ne semblent pas vraiment corrects (et ils ne semblent pas fonctionner non plus)
N'y a-t-il simplement aucun moyen de définir quoi que ce soit pour être accessible à la fois à partir de modèles et de vues? Je veux dire, je sais que les modèles et les vues doivent être séparés, mais dans certains domaines, il y aura sûrement des fois où ils devront se référer aux mêmes connaissances spécifiques au domaine?