在我的rails应用程序中,我有关系设置
用户has_many :contacts
,用户的所有联系人都存储在联系人中
当我user.contacts
时,我获得current_user
的所有联系人我想检查已注册的用户联系人数已经存在于用户表中。我有一些解决方案,我将用户的每个联系人与db(用户表)进行比较。但是这个过程非常耗时,寻找更优化的方法。
答案 0 :(得分: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
答案 1 :(得分:0)
您可以使用关联扩展程序执行此操作:
class User
has_many :contacts do
def persisted
where(email: User.select(:email))
end
end
end
假设您的联系人和用户模型都有一个电子邮件字段。