2016-01-01 3 views
1

Я использую Devise for Authentication for rails. Теперь я создаю API, в котором есть экземпляр, где мне нужно вернуть идентификатор пользователя, который имеет электронное письмо, которое отправляется как параметр. Просто пользователь вводит электронную почту и получает в результате свой ИДЕНТИФИКАТОР. Я использую GRAPE для API.Как получить идентификатор пользователя из моей базы данных - rails

@user = User.where(:email => params[:email]) 
@user.id 

Однако, это возвращает ошибку.

NoMethodError (undefined method `id' for #<User::ActiveRecord_Relation:.... 

Теперь я хочу знать, как получить идентификатор пользователя с его электронной почтой?

Цените любую помощь.

Спасибо.

P.S. Не хотите использовать current_user, поскольку это что-то делается с помощью API-ключей, а не DEVISE SESSIONS.

ответ

6

Вызов User.where всегда будет возвращать ActiveRecord :: Relation - список записей пользователя, даже если список содержит одну запись (или нуль!).

Если вы ожидаете получить только одну запись, вы можете использовать User.find_by, например. User.find_by(email: params[:email]). Это вернет вам либо пользовательскую запись, которую вы можете назвать id, либо nil, если пользователь не соответствует.

+0

Спасибо! Оно работает! Все еще не понял, как я пропустил эту простую основную точку. Ха-ха .. –