Hola buenas.
Tengo otra duda o necesidad de consejo.
La duda es la siguiente:
Tengo una tabla inmuebles.
Un inmueble pertenece a una provincia y a una ciudad.
El esquema de tablas es el siguiente:
INMUEBLE
id NOT NULL
nombre
descripcion
…
provincia_id NOT NULL
ciudad_id
*(La provincia es obligatoria pero la ciudad no)
PROVINCIA
id
nombre
CIUDAD
id
nombre
provincia_id
Los modelos de RoR los tengo asÃ
Inmueble : belongs_to :provincia,:ciudad
Provincia : has_many :inmuebles,:ciudades
Ciudad : has_many :inmuebles,belongs_to: :provincia
No sé si es el esquema de tablas más acertado, se admiten sugerencias.
El caso es que en la vista de inmuebles para acceder al nombre de las
provincias y las ciudades lo hago de la siguhiente manera:
=> inmueble.provincia.nombre
=> inmueble.ciudad.nombre
El problema es que si la ciudad es NULL en la base de datos me da un
error.
¿Como puedo manejar/plantear esto?
La manera mas facil y rapida (y la que solia utilizar en php)es crear un
metodo en inmuebles que sea “devolver_nombre_ciudad” y usarlo e lugar de
inmueble.ciudad.nombre.En este metodo comprobaria si el campo ciudad_id
es null y en ese caso devolveria “Sin ciudad” o sino devolveria el
nombre de la ciudad.
Otra alternativa seria hacer un if en la vista.
if inmueble.ciudad puts inmueble.ciudad.nombre
else puts “Sin clasificar”
Esta solucion me gusta mas pero ya se sabe que no se debe poner logica
en las vistas.
No se si es la manera en la que se plantean estas cuestiones con RoR.
Que me aconsejais?.
Un saludo.