Этот вопрос в 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