重命名数据库中的多个项目

时间:2015-08-04 08:00:35

标签: ruby ruby-on-rails-4

我在rails 4中为我的数据库播种了大量数据。我导入的数据是由gigabot(使用gigabot)API的用户手动输入的。

我遇到的问题是我试图在我的案例中列出“俱乐部之夜”,但由于名称相似但不完全相同,我得到了很多重复。有没有什么方法可以将项目分组,其中名称包含某个单词,然后将它们组合在一起。

目前这些是我唯一的验证

class Club < ActiveRecord::Base
  has_many :events
  validates :name, presence:true, uniqueness:true
  validates :location, presence:true
  validates :description, presence:true, uniqueness:true
end

以下是该表当前显示的一些示例数据

姓名

DC10
失忆
Circo Loco @ DC10
Sankeys
Sankeys Ibiza

特权Ibiza
Circoloco在Dc 10
空间
太空伊比沙岛

如果你看一下上面的例子,你会看到一些俱乐部被重复。我想清理桌子,所以它只有“DC10”作为1个俱乐部,并且所有名称中都有DC10的俱乐部组合在一起。

在上面的例子中,不是有10个单独的俱乐部,而是6个。

DC10, 健忘症, 空间, Sankeys, 特权, 茧。

2 个答案:

答案 0 :(得分:0)

查看ActiveRecord的update_all方法。

这将允许您更新集合中字段的所有值。所以现在你必须得到一个你确定合适的系列。

我建议做SIMILAR for postgres之类的事情。所以你可以这样做:

pattern = '%DC10%' # This can be as advanced as you need it
collection = Club.where('name SIMILAR TO ?', pattern)
collection.update_all(name: 'DC10')

答案 1 :(得分:0)

这听起来像是一项非常艰巨的任务。很可能你无法想出能够捕捉你意图的正则表达式。

例如,假设你有一个俱乐部Space和其他条目

Void @ Space
Outer Space
Inner space
Alien in Outer Space

它们都以太空结束但哪些应该重新组合?我的例子有点夸张,但听起来你正在处理大量的数据和案例,例如这可能会发生。

你有没有其他可以帮助你重新组合记录的fied?像GPS坐标,城市等?