У меня есть приложение Rails 3.1.3, которое использует devise
для аутентификации пользователей и мягко удаляет их с помощью acts_as_paranoid
. Я хочу, чтобы учетные записи были восстановлены после восстановления пароля, регистрации пользователя и входа в систему, поэтому, если они предоставляют удаленное электронное письмо, я беру эту учетную запись, снова активирую ее, а затем продолжаю действие (восстановление пароля или вход в систему). ).
Но в действии Users::SessionsController#create
после удаления пользователя появляется неавторизованная ошибка (но пользователь должен теперь быть видимым). Код:
def create
# Take into account acts_as_paranoid deleted users
resource = resource_class.only_deleted.find_by_email(params[resource_name][:email])
resource.undelete! if resource
resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
Если я добавлю resource.reload
вызов после восстановления, это ничего не изменит. И если я вхожу снова, пользователь обычно входит в систему, так как он был восстановлен в предыдущей попытке.
Почему это происходит? Как я могу восстановить его и войти в него за один create
звонок?