2013-06-28 5 views
1

Я использую драгоценный камень Девиза. Он не настроен на :confirmable, однако я хочу, чтобы пользователь не регистрировался автоматически сразу после процесса регистрации. По какой-то причине теперь они автоматически регистрируются, что прямо противоположно тому, что я хочу.Отключить автоматический вход для пользователей сразу после регистрации

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

+0

Есть ли какой-либо другой шаг пользователям необходимо выполнить? –

+0

@ ZachKemp, администратор должен их принять, они ничего не делают. –

+0

См. Эту страницу на вики-странице Devise: [Как сделать: admin для активации учетной записи перед sign_in] (https://github.com/plataformatec/devise/wiki/How-To%3a-Require-admin-to-activate- account-before-sign_in) –

ответ

2

https://github.com/plataformatec/devise/wiki/How-To:-Redirect-to-a-specific-page-on-successful-sign-up-(registration)

В основном, следуют шаги. В вашем after_sign_up_path_for метод, вы можете вызвать

sign_out resource 

затем перенаправить их на то, что страница, которую вы хотите, чтобы перейти к (возможно, корень, или на странице входа в систему).

Пользователь зарегистрирован через метод sign_up, который вызывается при разработке; это стандартная процедура - многие веб-сайты регистрируются пользователями сразу после их регистрации. Большинство из них не требуют подтверждения сначала, поэтому ваш прецедент это несколько нетипично. Тем не менее, выполнение описанного выше метода должно делать то, что вы хотите, без необходимости выполнять подтверждающие или выполнять какие-либо утверждения членства.

1

Подписание пользователем после регистрации осуществляется методом sign_up в Devise::RegistrationsController, который вызывается действием [create][1]. Вы можете просто переопределить этот метод с пустым, чтобы предотвратить вход. Это сработало для меня!

В app/controllers/users/registrations_controller.rb:

class Users::RegistrationsController < Devise::RegistrationsController 

    def sign_up(resource_name, resource) 
    end 
end 

Примечание: заменить users с именем таблицы.

Extra:

Если разрешить только администраторам добавлять новых пользователей, или, возможно, других администраторов, а также использовать создать действие, чтобы добавить их, этот предыдущий метод также даст вам преимущество, не имея подписать вне. Вы можете настроить то, что страница будет перенаправлен после регистрации путем переопределения метода after_sign_up_path_for в app/controllers/application_controller.rb:

class ApplicationController < ActionController::Base 
    def after_sign_up_path_for(user) 
     '/users/show' # replace with the path you want 
    end