我在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, 特权, 茧。
答案 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坐标,城市等?