Rails 检查重复模型

Rails check for duplicate models

我在我的 rails 应用程序中犯了一个错误,我没有强制登录名的唯一性。现在我想通过在我的代码中查找和删除重复项(手动)来清理这个烂摊子。

我可以在 Rails 控制台中输入一个很好的命令来让我找到这些重复项吗?例如。找到两个具有相同登录名的用户,并可能制作一个重复数组数组?

假设您的模型是 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")

当然,您可以更改 select 以包含您需要的任何属性,以便决定如何处理重复项。

EDIT 对于 Mongoid,look at this link