2016-10-12 61 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條記錄,因爲兩者都是相同的。我只想要顯示一個。有什麼辦法可以解決這個問題嗎?通過email_sent

+2

你把所有的意見拿起並選擇其中不同的連接到它之前不同的領域。像:'.select(:name,:mobile,:company,:requirements,:email_sent).distinct' –

回答

0

嘗試使用組後地方:

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

第一部分,模型應該有驗證,使這些類型的數據不會被存儲

它可以通過這個

完成

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

第二部分,仍然如果你想查詢類似上面的情況。你必須要做到這一點

Contact.select(:name, :company, :mobile, :requirement).where(email_sent: false).distinct將查詢

PS:回答的問題