【发布时间】:2012-07-08 08:31:27
【问题描述】:
我试图用 ruby 编写一个方法,它可以:
- 查询并找到我们数据库中满足特定条件的所有重复项(第一个
name、last_name、account_id和title都匹配) - 遍历它们并为所有重复项合并一个名为
possible_unique_keys的字段的内容 - 删除重复记录,因为每个记录都有 1 条记录并带有连接字段
我从一个快速查询开始,只提取出 dup 候选人:
results = ActiveRecord::Base.connection.select_all( "SELECT id, first_name, last_name, title, account_id, possible_unique_keys, device_contacts_count FROM CONTACTS AS a WHERE 1 < (SELECT Count(*) FROM CONTACTS AS b WHERE b.first_name = a.first_name AND b.last_name = a.last_name AND b.title = a.title AND b.account_id = a.account_id)" )
它使用我需要的字段提取看似正确的结果集。当我尝试遍历它们时,第一个问题出现了:
results.each do |contact|
contact.first_name
end
我真的才刚刚开始尝试解决这个问题,但是当我尝试引用任何字段时遇到错误,就像我在上面尝试引用 first_name 时所做的那样:
NoMethodError: 未定义方法
first_name用于#<Hash:0x00000006641cb0>
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3.1