Как лучше связать адрес с несколькими моделями в рельсах?

Этот вопрос на SO, похоже, связано с моим вопросом, но я не уверен, что мой вопрос отвечает на это.

Адрес может принадлежать более чем одной модели (UserProfile и Event). Как правильно это реализовать?

Основные таблицы:

user_profiles(id)
events(id)

Варианты реализацииадреса Таблица:

addresses(id,user_profile_id,event_id)
Этот подход кажется глупым, поскольку если завтра адрес должен принадлежать еще одной модели, я должен добавить это поле id.
Кроме того, я пока не знаю, но добавление нового поля идентификатора может привести к поломке некоторого кода?

addresses(id,model_type,model_id)
Это полиморфно, верно. Я не знаю почему, но я как-то опасаюсь этого?

Какой-то другой способ сделать это?

Заметка:

Я мог бы сделать таблицы, как это, я полагаю:

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

Но это означает, что то же самоеaddress_id могут принадлежать к разным моделям. Я полагаю, что это не должно быть так, потому что, например, скажем, что адрес для события должен быть изменен, но это не должно влиять на адресuser_profile, Так что это будет что-то вроде этого (что я считаю неправильным):

@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 

Ответы на вопрос(2)

Ваш ответ на вопрос