У меня есть модель User
, которая belongs_to :location
(то есть каждый пользователь может иметь ровно одно местоположение, но местоположение может совместно использоваться несколькими пользователями).Таблица users
имеет столбец location_id
для отслеживания этого.
Если пользователь хочет изменить свое местоположение, я считаю, что поведение по умолчанию с ассоциацией Rails заключается в изменении фактической ассоциации;в этом случае, однако, я хочу, чтобы существующая ассоциация (т.е. существующая запись Location
) осталась прежней, а новая была создана.
Например, скажем, у нас есть пользователи Алиса,Боб, Чарли и Дейв, у всех из которых есть location_id == 1
, что соответствует местоположению Улица Сезам 123. Затем, когда Дейв меняет свое местоположение на Улицу Сезам 124, Location
1 не должен быть затронут или изменен каким-либо образом, и Location
2 должен быть создан с новой информацией, а запись пользователя Дейва обновлена, чтобы отразить, что location_id
теперь равно 2 вместо 1.
Я хочу внести изменения на уровне модели (предположительно, User
модель), чтобы при изменении какой-либо информации о местоположении (User
также accepts_nested_attributes_for :location
) связь Location
корректно обновлялась без перезаписи существующей информации.
Есть ли способ сделать это,встроен в Rails или в плагин?