Tengo un campo tipo en un modelo llamado usuario que es un int en el db. El valor del int speficies es el tipo de tienda que es. Ejemplo:¿El mejor lugar para almacenar las constantes específicas del modelo en los rieles 3.1?
- 0 = madre
- 1 = padre
- 2 = abuela
- y así sucesivamente
Tengo varios otros campos como éste por lo que es una exageración para crear tablas de asociación .
En lugar de verificar los valores int sobre el lugar en los enunciados condicionales en el modelo y la lógica del controlador, ¿hay algún lugar en los raíles para almacenar estas constantes?
¿Para que pueda hacer esto con mis modelos y controladores?
if myuser.type == MOM
elsif myuser.type == GRAND_MOTHER
EDIT: Solución I fue con al final:
En el modelo:
# constants
TYPES = {
:mom => 0,
:dad => 1,
:grandmother => 2,
:grandfather => 3
}
En la lógica:
if u.type == User::TYPES[:mom]
pesar de que es más, me sentí es más intuitivo para otros desarrolladores cuando están leyendo mi código. Gracias a Taro a continuación por esta solución.
Gran solución. ¿Hay alguna manera de usar los valores en la tarea? Algo así como ... 'u.type = MOM' ... de lo contrario, en caso de que un valor cambie con el tiempo, se requerirían modificaciones a ese valor en varios archivos. – Hopstream
Coloque la constante dentro de la clase y consúltelo como 'User :: MOM'. – d11wtq
¿Es posible usar esta misma notación para acceder al método en un modelo sin crear primero el objeto como en PHP? Aparece un error de "método indefinido" si hago algo como 'ModelName :: mydef()' – Hopstream