2016-07-25 64 views
0

在我的Rails應用程序,我有關係的設置,例如具有 用戶has_many :contacts,用戶的所有聯繫人保存在聯繫人我如何檢查用戶是否在數據庫中存在或不

當我做user.contacts我得到的所有current_user的聯繫人我想檢查有多少用戶聯繫人已經註冊,意味着用戶表中已存在。我有一些解決方案記住我的用戶與db(用戶表)的每個聯繫人的比較。但是這個過程非常耗時,尋找更優化的方式。

+0

你需要所有在系統中有聯繫人的用戶嗎? –

+0

定義聯繫人是否存在可用於確定聯繫人是否已存在的唯一密鑰? (可能是一個電子郵件地址或其他影響) – engineersmnky

+0

請分享'describe contacts'和'describe users'的輸出。 – marmeladze

回答

1

假設您的Contact型號具有email作爲屬性,而User也具有email作爲屬性。要查找與那些爲current_user接觸的電子郵件註冊用戶的數量,你會怎麼做:

contact_emails = current_user.contacts.pluck("contacts.email") 
no_of_users_registered = User.where(email: contact_emails).count 
+0

你到底想要什麼?添加一些示例記錄。這個問題有點混亂。 – aBadAssCowboy

+0

謝謝!爲你的答案,但我不是在尋找這個。我的意思是eg:比方說,user1有很多聯繫人(他的朋友的email_addresses),現在我想檢查他的firend已經註冊了多少人 –

+0

@VibhooMishra我已經用該解決方案更新了答案 – aBadAssCowboy

0

你可以使用關聯擴展做到這一點:

class User 
    has_many :contacts do 
    def persisted 
     where(email: User.select(:email)) 
    end 
    end 
end 

假設兩者的聯繫人和用戶模型有一個電子郵件字段。

相關問題