Actualmente estoy escribiendo alguna aplicación web de intranet en la que las personas pueden enviar solicitudes a los administradores para agregar recursos diferentes. Las solicitudes ejemplo sería:Alternativas para usar polimorfismo en Ruby on Rails
- la instalación de programas, en este caso, el usuario seleccionará el programa que él quiere instalar
- aumento de cuota, en este caso, el usuario se acaba de entrar en la cantidad de espacio en disco que necesita o tal vez lo hará seleccione las cantidades predefinidas - 1GB, 10GB, etc ...
- cree un nuevo alias de correo electrónico, en este caso el usuario simplemente tecleará el alias.
- ...
Estaba pensando en tener un solo modelo UserRequests con la referencia al remitente y dos atributos opcionales se estaría REFERENCE_ID que refefrence a otras tablas (por ejemplo, el Programa que él quiere instalar) y otro sería usado para campos de tipo como alias o cuotas de correo electrónico.
Así que mi problema es que en función del tipo de la solicitud el modelo debe contener:
- referencia a otra tabla
- datos enteros
- datos de cadena
Basado en el tipo de la solicitud que se debe tomar la acción dada - probablemente se haya agregado el alias de correo electrónico de los rieles, pero la aplicación en la computadora de los usuarios se instalará a mano.
¿Alguien tuvo un problema similar? ¿Crees que usar polimorfismo para este tipo de cosas es una buena idea? ¿Tiene alguna sugerencia sobre cómo organizar los datos en las tablas?
Esto es exactamente lo que estaba buscando y tu publicación iluminó mi mente un poco. Gracias. –
Ian tiene razón, STI es perfecto para su solicitud aquí. Para un ejemplo de cuándo el polimorfismo sería útil en este caso, eso sería si tuviera tanto un usuario que tiene muchas solicitudes como un programa que tiene muchas solicitudes.Entonces ambos podrían tener muchas solicitudes gracias al polimorfismo, y las solicitudes aún pueden ser ITS tanto como lo deseen – Houen