Rails 5 ActiveRecord Delete Duplicates
SQL solution without loops:
Model.where.not(id: Model.group(:url).select("min(id)")).destroy_all
OR
Model.where.not(id: Model.group(:url).select("min(id)")).delete_all
OR
dup_ids = Model.group(:url).select("min(id)").collect{|m| m['min(id)']}
Model.where.not(id: dup_ids).delete_all
#Model.where.not(id: dup_ids).destroy_all
This will delete all duplicates keeping records with minimum id for duplicate records.
You can group by url, leave one and delete duplicates:
Model.all.group(:url).values.each do |dup|
dup.pop #leave one
dup.each(&:destroy) #destroy other
end