Module: ActiveRecord::FindDuplicates::ClassMethods

Defined in:
lib/activerecord/find_duplicates.rb

Instance Method Summary collapse

Instance Method Details

#find_duplicates(on:, min: 2) ⇒ Object

Examples:

User.find_duplicates(on: :email).group_by(&:email)
User.where('email is not null').find_duplicates(on: :email)


10
11
12
13
14
15
16
17
18
# File 'lib/activerecord/find_duplicates.rb', line 10

def find_duplicates(on:, min: 2)
  attr_name = on
  values = group(attr_name).having(
    # If I could figure out how to do "count(*)".gteq(min) with Arel, then it would work with sqlite
    arel_table[Arel.star].count.gteq(min)
  ).count.keys

  where(attr_name => values)
end