2016-10-12 7 views
0

重複レコードが存在する可能性のあるテーブルがあります。重複していないレコードの検索方法

id: 24, 
    name: "vamsi", 
    mobile: "7639817688", 
    company: "digi", 
    requirement: "mobile app", 
    created_at: Wed, 12 Oct 2016 11:05:33 UTC +00:00, 
    updated_at: Wed, 12 Oct 2016 11:05:33 UTC +00:00, 
    email_sent: false>, 
#<Contact:0x00000006d7a4f0 
    id: 25, 
    name: "vamsi", 
    mobile: "7639817688", 
    company: "digi", 
    requirement: "mobile app", 
    created_at: Wed, 12 Oct 2016 11:05:57 UTC +00:00, 
    updated_at: Wed, 12 Oct 2016 11:05:57 UTC +00:00, 
    email_sent: false>] 

ここで、email_sentがfalseである固有のレコードを探したいと思います。私はこの Contact.where(email_sent: false).distinct

Contact Load (0.4ms) SELECT DISTINCT "contacts".* FROM "contacts" WHERE "contacts"."email_sent" = $1 [["email_sent", false]] 
=> [#<Contact:0x00000006a1a698 
    id: 25, 
    name: "vamsi", 
    mobile: "7639817688", 
    company: "digi", 
    requirement: "mobile app", 
    created_at: Wed, 12 Oct 2016 11:05:57 UTC +00:00, 
    updated_at: Wed, 12 Oct 2016 11:05:57 UTC +00:00, 
    email_sent: false>, 
#<Contact:0x00000006a1a418 
    id: 24, 
    name: "vamsi", 
    mobile: "7639817688", 
    company: "digi", 
    requirement: "mobile app", 
    created_at: Wed, 12 Oct 2016 11:05:33 UTC +00:00, 
    updated_at: Wed, 12 Oct 2016 11:05:33 UTC +00:00, 
    email_sent: false>] 

を試してみました。しかし、両方が同じであるので、私は、2つのレコードを望まないでしょう。私は1つしか見せたくありません。私がこれを解決できる方法はありますか?

+2

質問にすべてのコメントからピックアップ。同様に: '.select(:name、:mobile、:company、:require、:email_sent).distinct' –

答えて

0

email_sent試しグループを使用した後:これらのデータの種類が

を保存することがないように

Contact.where(email_sent: false).group(:email_sent) 
0

最初の部分を、モデルはそれがこの

を介して行うことができます検証が必要ですが

validates_uniqueness_of :name, scope: [:mobile, :requirement, :company]

上記のシナリオのようなクエリを実行する場合でも、2番目の部分です。あなたはこの

Contact.select(:name, :company, :mobile, :requirement).where(email_sent: false).distinctがクエリ

PSだろうしなければならない:答えは、それまで別々の取り付け前に異なっているフィールドを選択する必要が

関連する問題