Рельсы проверяют наличие дублирующих моделей

Я допустил ошибку в своем приложении 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, посмотрите на эту ссылку

Другие вопросы по тегам