Wie ordne ich eine Adresse am besten mehreren Modellen in Schienen zu?

Diese Frag on SO scheint mit meiner Frage zu tun zu haben, aber ich bin mir nicht sicher, ob meine Frage damit beantwortet wird.

Eine Adresse kann zu mehreren Modellen gehören (UserProfile und Event). Wie kann dies korrekt implementiert werden?

Die Basistabellen:

user_profiles(id)
events(id)

Optionen zur Implementierung des Adressen Tabelle

addresses(id,user_profile_id,event_id)
Dieser Ansatz erscheint unsinnig, da ich das ID-Feld hinzufügen muss, wenn die Adresse morgen zu einem weiteren Modell gehören soll.
Auch ich weiß es noch nicht, aber das Hinzufügen eines neuen ID-Feldes kann dazu führen, dass auch Code kaputt geht?

addresses(id,model_type,model_id)
Das ist polymorph, richtig. Ich weiß nicht warum, aber ich fühle mich irgendwie misstrauisch?

Ein anderer Weg, dies zu tun?

Hinwei:

Ich hätte die Tabellen so machen können, nehme ich an:

user_profiles(id,address_id)
events(id,address_id)

Aber das bedeutet, dass das gleicheaddress_id kann zu verschiedenen Modellen gehören. Ich nehme an, es sollte nicht so sein, denn sagen Sie zum Beispiel, dass die Adresse für das Ereignis geändert werden muss, aber es sollte die Adresse des @ nicht beeinflussuser_profile. Das wäre also so etwas (was ich für falsch halte):

@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 

Antworten auf die Frage(4)

Ihre Antwort auf die Frage