Рельсы проверяют наличие дублирующих моделей
Я допустил ошибку в своем приложении rails и не установил уникальность логинов. Теперь я хотел бы исправить этот беспорядок, найдя и удалив дубликаты (вручную) в моем коде.
Есть ли хорошая команда, которую я мог бы ввести в консоли Rails, которая позволила бы мне найти эти дубликаты? Например. найти двух пользователей с одинаковым логином и, возможно, сделать массив из массива дубликатов?
1 ответ
Решение
Предполагая, что ваша модель User
и вы ищете дубликат атрибута login
, вы должны быть в состоянии сделать что-то вроде этого:
User.find_by_sql("SELECT u1.id, u1.login FROM users u1 LEFT JOIN users u2 WHERE u1.login=u2.login AND u1.id!=u2.id ORDER BY u1.login, u1.id")
Конечно, вы можете изменить выбор, чтобы включить любые атрибуты, которые вам понадобятся, чтобы решить, что делать с дубликатами.
РЕДАКТИРОВАТЬ для Mongoid, посмотрите на эту ссылку