Ответ 1
Это не очень полезно, но похоже, что нет большого ответа для обеспечения уникальности на уровне базы данных. Из Руководство по миграции Rails:
Способ Active Record утверждает, что интеллект принадлежит вашим моделям, а не в базе данных. Таким образом, такие функции, как триггеры или ограничения внешнего ключа, которые вставляют часть этого интеллекта обратно в базу данных, не используются в значительной степени.
Валидации, такие как validates_uniqueness_of, являются одним из способов, в которых модели могут обеспечить целостность данных.
Хотя Active Record не предоставляет никаких инструментов для непосредственного взаимодействия с такими функциями, метод execute может использоваться для выполнения произвольного SQL.
Похоже, что запуск самой команды SQL с помощью метода выполнения ActiveRecord может быть лучшим способом, если вы действительно хотите обеспечить уникальность в базе данных.