Я пытаюсь создать модель довольно особенного вида.
Я просто называю это письмами. Содержит поля, такие как:
адрес
send_count
заблокирован
Это реестр адресов электронной почты. Каждая запись в других моделях, содержащих адрес электронной почты, должна иметь ссылку на запись в этой модели. Таким образом я могу заблокировать / заблокировать и адрес электронной почты глобально в моем приложении и пометить его другими способами.
Если бы это вообще не было осуждено, я бы сказал, что адрес должен работать так же, как первичный ключ. Я могу установить только при создании, а затем никогда не обновляется, и он должен быть уникальным.
Мои проблемы с реализацией этого (с обычным первичным ключом) заключаются в том, как обрабатывать случай, когда электронные письма обновляются / создаются как связанная модель через вложенные атрибуты. Это наиболее распространенная ситуация, поскольку адрес электронной почты для пользователей приложения выглядит, как и любое другое поле.
Возможно, они редактируют форму своего аккаунта и могут изменить свой адрес электронной почты. Телефон должен заметить это и "find_or_create" экземпляр себя вместо обновления адреса. Обновление заблокированного свойства с другой стороны должно быть разрешено.
Я понял суть этого? Кто-нибудь может дать мне несколько советов о том, как заставить Модель вести себя так?
Я пробовал некоторые варианты использования проверок и обратных вызовов, но я могу "заменить себя" другой существующей записью. Простая установка всех атрибутов (включая id) для атрибутов существующей записи на самом деле не заставляет вещи работать полностью.
Любые идеи будут полезны.