私はRubyで次のことができるメソッドを書こうとしていました:
- クエリを実行して、特定の基準を満たす DB 内のすべての重複を検索します (最初
name
の 、last_name
、account_id
、およびtitle
すべての一致) 。 possible_unique_keys
それらを反復し、すべての重複に対して呼び出されたフィールドの内容を結合します- 連結されたフィールドを持つレコードがそれぞれ 1 つあるため、重複レコードを削除します。
重複候補のみを抽出する簡単なクエリから始めました。
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>