如何从我的数据库中获取用户ID - rails

时间:2016-01-01 13:49:24

标签: ruby-on-rails ruby devise

我在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完成的。

1 个答案:

答案 0 :(得分:7)

调用User.where将始终返回ActiveRecord :: Relation - 用户记录列表,即使该列表包含一个(或零!)记录。

如果您希望只获得一条记录,则可以使用User.find_by,例如。 User.find_by(email: params[:email])。这将返回用户记录,您可以拨打id,或nil如果没有用户匹配。