У меня есть Labellings
, которые принадлежат Emails
и Labels
.
Каждая маркировка должна быть уникальной для пары «электронная почта / этикетка», поэтому электронная почта может быть помечена как «тестовая» только один раз.
Я делаю это с validates_uniqueness_of :label_id, :scope => :email_id
. Это работает как ожидалось.
Когда я маркирую электронные письма, я хочу добавить маркировку, если она уникальна, и ничего не делать, если электронная почта уже помечена этой меткой.
Я не хочу дублировать функциональность проверки вокруг моего приложения с чем-то вроде:
email.labels << label unless email.labels.include?(label)
Можно ли гарантировать, что каждая маркировка имеет уникальную пару email_id / label_id без необходимости проверять ее вручную или обрабатывать исключения?