如何在ActiveRecord中找到除原始记录之外的重复记录

使用Rails 4,Ruby 2,MySql

我想在我的数据库中找到所有记录的重复记录 – 但不是原始记录本身。

这样我就可以在每个记录上更新update_attributes(:duplicate => true) ,并保留原始未记录为重复的记录。

你可以说我正在寻找与Uniq相反的东西*我不想要Uniq值,我希望所有的值在事后都不是uniq。 我不希望所有具有重复的值都包含原始值。

我不介意使用纯SQL或Ruby,但我更喜欢使用活动记录来保持Railsy。

假设该表被称为“Leads”,我们正在寻找那些字段“telephone_number”相同的表。 我会单独留下记录1并将2,3和4标记为duplicate = true。

*如果我想要与Uniq相反,我可以做一些类似于查找在Ruby哈希中重复的内容

b = a.group_by { |h| h[:telephone_number] }.values.select { |a| a.size > 1 }.flatten

但这就是所有的记录,我想要所有重复的记录,而不是我正在比较它的原始记录。

我假设您的查询返回arraysb中具有相同电话号码的所有“潜在客户”。 然后你可以使用

b = b.shift

它从b数组中取出第一个元素。 然后你可以继续你原来的想法update_attributes(:duplicate => true)