Relaciones entre módulos¶
Por qué importa¶
Las relaciones son las conexiones entre módulos: un caso "pertenece a" un aplicante; un aplicante "tiene muchos" casos; un caso "tiene muchos" documentos; una compañía "tiene muchos" casos y "tiene muchos" contactos. Estas conexiones son lo que hace que ImmCase no sea solo listas independientes — son las que generan las pestañas de relacionados y permiten navegar entre registros.
Tipos de relación¶
- belongsTo (perteneceA) — un registro apunta a otro. Ejemplo: un caso pertenece a un aplicante. Implementa con una columna FK.
- hasMany (tieneMuchos) — un registro tiene varios del otro lado. Ejemplo: un aplicante tiene muchos casos.
- hasOne (tieneUno) — un registro tiene exactamente uno del otro lado. Menos común.
- belongsToMany (muchosAMuchos) — relación con tabla intermedia. Ejemplo: aplicantes y consultores (un aplicante puede ser atendido por varios consultores; un consultor atiende varios aplicantes).
- morphTo / morphMany (polimórfica) — un registro puede relacionarse con varios tipos de registros distintos. Ejemplo: un comentario puede pertenecer a un aplicante o a un caso indistintamente.
Crear una relación¶
- Abre el módulo origen → pestaña Relaciones → Agregar relación.
- Llena:
- Tipo de relación.
- Módulo destino.
- Nombre de la relación (cómo se llama en código, plantillas, etc.).
- Etiqueta de la pestaña relacionada (lo que ve el usuario).
- Llave foránea (si aplica) — qué campo guarda la referencia.
- Guardar.
ImmCase: - Crea la columna FK en la tabla del módulo origen (si es belongsTo). - Genera la pestaña relacionada en la vista de detalle del módulo padre. - Permite acceder a registros conectados en plantillas y reportes.

Cómo se ven las relaciones en uso¶
En el detalle de un aplicante, las pestañas Casos, Compañías, Documentos son cada una una relación visualizada. Cuando entras a la pestaña Casos, lo que ves es: "todos los casos donde el campo applicant_id apunta a este aplicante".
ImmCase usa el campo display_name del módulo relacionado para mostrar cada registro en la lista. Por eso es importante tener display_name bien configurado.
Modificar o eliminar relaciones¶
- Renombrar la etiqueta — instantáneo, sin efecto en datos.
- Cambiar tipo de relación — solo viable si no hay datos; con datos, puede corromper.
- Eliminar la relación — la pestaña desaparece pero los datos (registros relacionados) permanecen — solo se desconectan visualmente. Puedes recrear la relación después y se reconectan automáticamente si la FK sigue presente.
Patrones comunes en ImmCase¶
- Caso
belongsToAplicante. - Aplicante
hasManyCasos. - Caso
belongsToCompañía (sponsor, empleador, escuela). - Compañía
hasManyCasos. - Caso
hasManyFormularios IMM. - Aplicante
hasManyDocumentos (polimórfica). - Caso
hasManyDocumentos (polimórfica).
Ten cuidado con¶
- Las relaciones polimórficas son complejas. Si necesitas que un comentario pertenezca a un aplicante O a un caso, es polimórfica. Útil pero más difícil de mantener — pídele a tu administrador técnico antes de configurar.
- Llaves foráneas con datos no se cambian. Si renombras la FK, los datos existentes pierden la referencia. Decide bien el nombre desde el principio.
- Eliminar el padre puede afectar a los hijos. Si configuras la relación con cascade, eliminar un aplicante elimina sus casos automáticamente. Si configuras con restrict, eliminar el aplicante falla mientras tenga casos. Decide según riesgo.
A dónde sigue¶
- Flujos de trabajo — automatizaciones basadas en relaciones.
- Visibilidades de campos — controlar qué se muestra en pestañas relacionadas.