2016-02-05 5 views
0

Я использую Ruby on Rails 4 и gem Devise. Я добавил пользователя для пользователей, следуя этому руководству: https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address. Имя пользователя уникально. Всякий раз, когда новый пользователь подписывается и хочет использовать имя пользователя, которое уже существует, он получает ошибку Active-Record. Все работает, как и должно.Telling Devise to redirect, если имя пользователя уже существует, Ruby on Rails, gem Devise

Теперь к моей проблеме: я хочу, чтобы, если пользователь выбирает уже существующее имя пользователя, он должен быть перенаправлен на страницу registration/new.html.erb со вспышкой, вместо того, чтобы видеть страницу ActiveRecord-Error-Page , Как это сделать?

Edit: код: Пользователи :: RegistrationsController # создать

 class Users::RegistrationsController < Devise::RegistrationsController 
# before_filter :configure_sign_up_params, only: [:create] 
# before_filter :configure_account_update_params, only: [:update] 

    # POST /resource 
    def create 
    @username = params[:username] 
    @usernames = User.all 
    @usernames.each do |f| 
     if f.username == @username 
     redirect_to root_path 
     end 
    end 
    super 
    end 
end 
+0

Добавить код для вашей реализации Devise 'registrations_controller # create' – MarsAtomic

+0

Я добавил код в: Devise :: RegistrationsController # create, это код, который вы просили? – Metaphysiker

ответ

1

Я нашел решение моей проблемы:

Я добавил это в мой контроллер:

# POST /resource 
    def create 
    @username = sign_up_params[:username] 
    if usernameexists(@username) 
    redirect_to root_path 
    else 
     super 
    end 
    end 

, и это похоже, работает таким образом.

Смежные вопросы