Используя ActiveRecord, у меня есть объект, Клиент, который равен нулю или более Пользователям (т.е. через ассоциацию has_many). Клиент также имеет атрибут «primary_contact», который можно установить вручную, но всегда должен указывать на одного из связанных пользователей. То есть primary_contact может быть пустым, только если нет связанных пользователей.
Какой лучший способ реализовать Клиент, такой:
a) При первом добавлении пользователя к клиенту primary_contact указывает на этого пользователя?
b) Первичный_контакт всегда гарантированно входит в ассоциацию пользователей, если только все пользователи не удалены? (Это состоит из двух частей: при установке нового primary_contact или удалении пользователя из ассоциации)
Другими словами, как я могу назначить и переназначить название «основного контакта» одному из пользователей данного клиента? Я возился с многочисленными фильтрами и проверками, но я просто не могу понять это правильно. Любая помощь будет оценена.
ОБНОВЛЕНИЕ: Хотя я уверен, что существует множество решений, я закончил тем, что Пользователь информировал Клиента, когда он удаляется, и затем использовал вызов before_save в Клиенте для проверки (и установки, если необходимо) его primary_contact. Этот вызов инициируется пользователем непосредственно перед его удалением. Это не охватывает все крайние случаи при обновлении ассоциаций, но достаточно для того, что мне нужно.