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