0

私はRubyで次のことができるメソッドを書こうとしていました:

  1. クエリを実行して、特定の基準を満たす DB 内のすべての重複を検索します (最初nameの 、last_nameaccount_id、およびtitleすべての一致) 。
  2. possible_unique_keysそれらを反復し、すべての重複に対して呼び出されたフィールドの内容を結合します
  3. 連結されたフィールドを持つレコードがそれぞれ 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>

4

1 に答える 1

1

列名をキー、列値を値として、レコードハッシュの配列を返します。

contact[:first_name] 

また

contact["first_name"]
于 2012-07-08T21:21:33.173 に答える