¿Hay una manera de utilizar polimórficos asociaciones en sentido inverso para que no tiene que tener link_id, picture_id, y los campos en code_id mi ¿Mesa del poste?
has_one
implica que la clave externa se encuentra en la otra mesa. Si realmente ha definido su modelo de esta manera, entonces no tendrá link_id
, picture_id
y code_id
en su tabla de publicaciones. Creo que quisiste decir belongs_to
.
quiero hacer algo como @ post.postable y obtener el objeto secundario , lo que sería una de enlace, imagen, o el código.
creo que usted puede hacer esto mediante el uso de las ITS y la combinación de los links
, pictures
y codes
tablas, y luego probar el tipo de modelo cuando se recuperan. Sin embargo, eso parece kludgey, y podría terminar con muchas columnas sin usar.
¿Hay alguna razón para no almacenar las columnas de Id. No utilizadas, aparte de ahorrar espacio? Si usted está dispuesto a mantenerlos, entonces se podría definir un atributo virtual y una columna postable_type
: (código no probado, puede fallar espectacularmente)
def postable
self.send(self.postable_type)
end
def postable=(p)
self.send(postable_type.to_s+"=",p)
end
¿Tendría sentido que la foto tenga una relación: has_many? Entonces podrías hacer lo que estás buscando ... – Trip