Recién estoy comenzando con mi primera aplicación web Ruby on Rails. Tengo un montón de diferentes modelos, vistas, controladores, etc.
Quiero encontrar un buen lugar para pegar definiciones de constantes verdaderamente globales, que se apliquen a toda mi aplicación. En particular, se aplican tanto en la lógica de mis modelos como en las decisiones tomadas en mis puntos de vista. No puedo encontrar ningún lugar SECO para poner estas definiciones donde estén disponibles tanto para todos mis modelos como para todas mis vistas.
Para tomar un ejemplo específico, quiero una constante COLOURS = ['white', 'blue', 'black', 'red', 'green']
. Esto se usa en todo el lugar, tanto en modelos como en vistas. ¿Dónde puedo definirlo en un solo lugar para que sea accesible?
Lo que probé:
- Variables de clase constante en el archivo model.rb con las que están más asociadas, como
@@COLOURS = [...]
. Pero no pude encontrar una forma sensata de definirlo para poder escribir en mis puntos de vista enCard.COLOURS
lugar de algo muy groseroCard.first.COLOURS
. - Un método en el modelo, algo así como el
def colours ['white',...] end
mismo problema. - Un método en application_helper.rb: esto es lo que estoy haciendo hasta ahora, pero los ayudantes solo son accesibles en vistas, no en modelos
- Creo que podría haber intentado algo en application.rb o environment.rb, pero eso no parece correcto (y tampoco parece funcionar)
¿No hay forma de definir algo que sea accesible tanto desde los modelos como desde las vistas? Quiero decir, sé que los modelos y las vistas deben estar separados, pero seguramente en algunos dominios habrá ocasiones en que necesiten referirse al mismo conocimiento específico del dominio.