2015-06-19 4 views
0

Я сделал ошибку в приложении rails, и я не применял уникальность логинов. Теперь я хотел бы очистить этот беспорядок, найдя и удалив дубликаты (вручную) в моем коде.Проверка Rails для повторяющихся моделей

Есть ли хорошая команда, которую я мог бы ввести в консоли Rails, которая позволила бы мне найти эти дубликаты? Например. найти двух пользователей с одинаковым логином и, возможно, создать массив массивов дубликатов?

ответ

0

Если предположить, что модель является 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") 

Конечно, вы можете изменить выбор, чтобы включать в себя все, что атрибуты вам нужно чтобы решить, что делать с дубликатами.

EDIT для Mongoid, look at this link

+0

Я не думаю, что вы можете использовать SQL запросы с Mongoid :) – cthulhu

+0

@cthulhu хороший вызов - пропустил этот тег ... –

+2

К сожалению @Cyril плохо себя чувствовать, что я answerbombed ваш вопрос :(Я не так знаком с «Мондоидом», но нашел [этот ответ] (http://blog.mongolab.com/2014/03/finding-duplicate-keys-with-the-mongodb-aggregation-framework/) который выглядит многообещающим для вашего случая использования. Надеюсь, он поможет ... –

Смежные вопросы