Я пытался написать метод рубина, который мог бы:Попытки обработать дубликат ActiveRecord результаты
- запрос через и найти все дубликаты в нашей БД, которые удовлетворяют определенные критерии (первые
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: undefined method
first_name
for#<Hash:0x00000006641cb0>
Да, это то, что я делаю неправильно ... Спасибо –