gpt4 book ai didi

ruby-on-rails-3 - 基于多列删除重复记录?

转载 作者:行者123 更新时间:2023-12-03 05:21:12 25 4
gpt4 key购买 nike

我正在使用 Heroku 托管我的 Ruby on Rails 应用程序,由于某种原因,我可能有一些重复的行。

有没有办法根据 2 个或更多条件删除重复记录,但只保留该重复集合的 1 条记录?

在我的用例中,我的数据库中有汽车的品牌和型号关系。

Make      Model
--- ---
Name Name
Year
Trim
MakeId

我想删除具有相同名称、年份和装饰的所有模型记录,但保留其中 1 个记录(也就是说,我需要该记录,但只需要一次)。我正在使用 Heroku 控制台,因此我可以轻松运行一些事件记录查询。

有什么建议吗?

最佳答案

class Model

def self.dedupe
# find all models and group them on keys which should be common
grouped = all.group_by{|model| [model.name,model.year,model.trim,model.make_id] }
grouped.values.each do |duplicates|
# the first one we want to keep right?
first_one = duplicates.shift # or pop for last one
# if there are any more left, they are duplicates
# so delete all of them
duplicates.each{|double| double.destroy} # duplicates can now be destroyed
end
end

end

Model.dedupe
  • 查找全部
  • 将它们分组到您需要唯一性的键上
  • 循环分组模型的哈希值
  • 删除第一个值,因为您想保留一个副本
  • 删除其余内容

关于ruby-on-rails-3 - 基于多列删除重复记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14124212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com