¿Cuál es la mejor manera de asociar una Dirección a múltiples modelos en rieles?
Esta pregunta en SO parece estar relacionado con mi pregunta, pero no estoy seguro de que mi pregunta sea respondida por eso.
Una dirección puede pertenecer a más de un modelo (perfil de usuario y evento) ¿Cuál es la forma correcta de implementar esto?
Las tablas básicas:
user_profiles(id)
events(id)
Opciones para implementar eldirecciones mesa:
addresses(id,user_profile_id,event_id)
Este enfoque parece ser poco claro ya que si mañana la dirección debe pertenecer a un modelo más, tengo que agregar ese campo de identificación.
Además, aún no lo sé, pero ¿agregar un nuevo campo de identificación también puede causar que se rompa algún código?
addresses(id,model_type,model_id)
Esto es polimórfico, cierto. No sé por qué, pero de alguna manera me siento cauteloso.
¿Alguna otra forma de hacer esto?
Nota:Podría haber hecho las tablas así, supongo:
user_profiles(id,address_id)
events(id,address_id)
Pero, esto significa que lo mismoaddress_id
Puede pertenecer a diferentes modelos. Supongo que no debería ser así, porque digamos, por ejemplo, que la dirección del evento necesita ser cambiada, pero no debería afectar la dirección del evento.user_profile
. Entonces eso sería algo como esto (que creo que está mal):
@current_user_profile.address = some_new_address
#this would have changed the address for both the user_profile *and* the event
@current_user_profile.save