我使用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
答案 0 :(得分:1)
我找到了解决问题的方法:
我把它添加到我的控制器:
# POST /resource
def create
@username = sign_up_params[:username]
if usernameexists(@username)
redirect_to root_path
else
super
end
end
它似乎以这种方式工作。