Как установить "current_user", даже если пользователь не вошел в систему? - Рельсы 3

Я использую Devise для аутентификации, и когда кто-то посещает определенный URL (с определенными параметрами в URL-адресе), я хотел бы установить "current_user" на определенное значение из db.

Как это сделать?

Кроме того, должен ли я убедиться, что все требования к проверке выполнены? Например, моя пользовательская модель имеет:

validates_presence_of :username, :email

Если я установил current_user, должен ли я установить оба имени: username и: email, или я могу просто сделать то или другое?

Ответ 1

Вы можете попробовать

@user = User.where(:x => "y").first # Find the user depending on the params
sign_in(@user)
# do work
sign_out(@user)

Я не знаю, если это лучший способ сделать это, но он установит current_user.

Ответ 2

devise current_user helper устанавливает переменную экземпляра @current_user, так что:

@current_user = User.first

также установит current_user для выбранного пользователя.