告诉设计重定向,如果用户名已经存在,Ruby on Rails,gem Devise

时间:2016-02-05 23:31:01

标签: ruby-on-rails devise

我使用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错误。一切正常,应该如此。

现在我的问题:我想,如果用户选择已经存在的用户名,他应该被重定向到带有flash消息的registrations / new.html.erb页面,而不是看到ActiveRecord-Error-Page。我该如何做到这一点?

编辑:代码:Users :: RegistrationsController #create

      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

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法:

我把它添加到我的控制器:

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

它似乎以这种方式工作。