Этот вопрос на SO, похоже, связан с моим вопросом, но я не уверен, что на мой вопрос ответили.
Адрес может принадлежать более чем одной модели (UserProfile и Event)
Какой правильный способ реализовать это?
Основные таблицы:
user_profiles(id)
events(id)
Параметры для реализации таблицы адресов:
-
addresses(id,user_profile_id,event_id)
Этот подход кажется клонистым, поскольку, если завтра адрес должен принадлежать еще одной модели, я должен добавить это поле 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