module FindDuplicates::ClassMethods
Public Instance Methods
duplicates(*args)
click to toggle source
# File lib/find_duplicates.rb, line 22 def duplicates(*args) set_fields(args) self.joins("join ( select #{fields_str}, count(*) as qty from #{self.table_name} group by #{fields_str} having count(*) > 1 ) t on #{fields_query}").all end
Private Instance Methods
fields_query()
click to toggle source
# File lib/find_duplicates.rb, line 39 def fields_query @fields.map {|f| "#{self.table_name}.#{f} = t.#{f}"}.join(' and ') end
fields_str()
click to toggle source
# File lib/find_duplicates.rb, line 36 def fields_str @fields.join(',') end
set_fields(args)
click to toggle source
# File lib/find_duplicates.rb, line 32 def set_fields(args) @fields = args.is_a?(Array) ? args : [args] @fields = @fields.flatten.map &:to_s end