Disculpas si la pregunta es un poco imprecisa, pero describiré a continuación mi problema.Almacenamiento adecuado de modelos de "enumeración" en Rails
Soy la creación de algunos modelos en un proyecto de carriles, y una cosa que he notado que estoy corriendo en más de un par de veces que se trata de atributos que cumplan los siguientes criterios:
- Ellos se puede establecer en uno de un pequeño conjunto predefinido de valores
- Esos valores deben tener tanto un nombre como un identificador (ya sea un identificador numérico, código, lo que sea)
- Los valores solo cambiarán como resultado de una buena cantidad de cambio de código.
Por ejemplo, uno de mis modelos debe tener un campo status
que se puede establecer en uno de: Definición, Ejecutado o Completado. Necesito mostrar esas palabras específicas dentro de la interfaz, pero no quiero almacenar las cadenas en el DB en caso de que necesite cambiarlas en el futuro (o internacionalizar, o lo que sea)
La opción obvia es para definir modelos para cada uno de estos modelos, pero parece presentar una gran cantidad de gastos indirectos en el mantenimiento de los modelos, lo que garantiza que escriba las migraciones entre entornos, etc. para cada uno de estos, lo que parece una gran sobrecarga.
La otra opción es almacenarlo como un entero, y activar una clase de tipo "enumeración" que almacena la traducción de esos valores - esto probablemente funcionaría bien, pero me preocupa perder asociaciones y otras cosas útiles que obtengo de los modelos de ActiveRecord.
¿Algún consejo sobre la mejor manera de manejar esta situación?
Esta es una gran joya ... ¡gracias! – elsurudo
@elsurudo gracias! Ha recorrido un largo camino desde la primera vez que publiqué esto y me encantaría recibir comentarios si terminas usándolo. –
@Beerlington Finalmente encontré la manera correcta de hacer la pregunta para poder encontrar tu gema; es una solución elegante, simple y poderosa a un problema que he resuelto y resuelto en numerosos proyectos de Rails. ¡Lo recomiendo para otros! –