我在rails上使用Devise进行身份验证。 现在我正在构建一个API,其中有一个实例,我需要返回用户的id,其中包含作为参数发送的电子邮件。 简单地说,用户输入电子邮件并获取其用户ID作为结果。我正在使用GRAPE for API。
@user = User.where(:email => params[:email])
@user.id
但是,这会返回错误。
NoMethodError (undefined method `id' for #<User::ActiveRecord_Relation:....
现在我想知道如何通过电子邮件检索用户的ID?
感谢任何帮助。
感谢。
P.S。不想使用current_user,因为这是使用API密钥而不是DEVISE SESSIONS完成的。
答案 0 :(得分:7)
调用User.where
将始终返回ActiveRecord :: Relation - 用户记录列表,即使该列表包含一个(或零!)记录。
如果您希望只获得一条记录,则可以使用User.find_by
,例如。 User.find_by(email: params[:email])
。这将返回用户记录,您可以拨打id
,或nil
如果没有用户匹配。