【问题标题】:how do I check whether user exists in db or not如何检查用户是否存在于数据库中
【发布时间】:2016-07-25 17:22:18
【问题描述】:

在我的 Rails 应用程序中,我有这样的关系设置 用户has_many :contacts,一个用户的所有联系人都存储在联系人中

当我做user.contacts 时,我得到了current_user 的所有联系人我想检查有多少用户联系人已经注册,这意味着用户表中已经存在。我有一些解决方案,我将用户的每个联系人与数据库(用户表)进行比较。但是寻找更优化的方法的过程将非常耗时。

【问题讨论】:

  • 你需要系统中所有有联系人的用户吗?
  • 什么定义了联系人 是否有唯一的键可以用来确定联系人是否已经存在? (可能是电子邮件地址或其他影响)
  • 请分享describe contactsdescribe users的输出。
  • 我有一个简单的关系建立用户has_many :contacts & 联系belongs_to :user

标签: mysql ruby ruby-on-rails-4


【解决方案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

【讨论】:

  • 您到底想要什么?添加一些示例记录。这个问题有点令人困惑。
  • 谢谢!为你的答案,但我不是在寻找这个。我的意思是:假设 user1 有很多联系人(他朋友的电子邮件地址)现在我想检查他的朋友有多少已经注册
  • @VibhooMishra 我已经用解决方案更新了答案
  • 谢谢!它对我有用。还有一件事,这是最优化的方式。
【解决方案2】:

您可以使用关联扩展来执行此操作:

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

假设您的联系人和用户模型都有一个电子邮件字段。

【讨论】:

    猜你喜欢
    • 2013-08-31
    • 2021-12-28
    • 2015-02-02
    • 2013-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2021-12-19
    相关资源
    最近更新 更多