2014-08-28 3 views
2

나는 데이터베이스에 username 열을 만듭니다. 지금은 email을 제거한 다음 사용자 sign upusername으로 삭제하고 싶습니다. 이 경우 username 필드를 sign up 페이지에 만들 수 있지만 다시 새 필드를 작성해야합니다. 그렇지 않으면 이메일 필드의 유효성 검사 오류가 발생합니다. 전자 메일 유효성 검사를 제거하고이를 사용자 이름의 개인 유효성 검사로 바꿀 수 있습니까? 그리고 나서 사용자는 usernamepassword을 입력하여 가입 할 수 있습니까?devise : 사용자 이름으로 등록

users_controller.rb : 나는에 코드 아래에있는

def user_params 
    params.require(:user).permit(:username, :email, :password, :password_confirmation, :remember_me) 
    end 

views/devise/registrations/new.html.erb :

<h2>Sign up</h2> 

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %> 
    <%= devise_error_messages! %> 

    <div><%= f.label :email %><br /> 
    <%= f.email_field :email, autofocus: true %></div> 

    <div><%= f.label :username %><br /> 
    <%= f.email_field :username %></div> 

    <div><%= f.label :password %> <% if @validatable %><i>(<%= @minimum_password_length %> characters minimum)</i><% end %><br /> 
    <%= f.password_field :password, autocomplete: "off" %></div> 

    <div><%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation, autocomplete: "off" %></div> 

    <div><%= f.submit "Sign up" %></div> 
<% end %> 

<%= render "user/shared/links" %> 
+0

몇 가지 질문이 있습니다. 이메일 입력란을 완전히 삭제하고 있으므로 사용자에게 확인 안내를 어떻게 보내시겠습니까? 사용자에게 비밀번호 재설정 안내를 어떻게 보내시겠습니까? – Mandeep

+0

사용자가 자기 계정으로 계정을 만들 수 없으며 Superadmin이 사용자 이름으로 새 사용자를 만들고 사용자가 암호를 잊어 버린 경우 superadmin에서 암호를 재설정 할 수 있습니다. 사용자 전화 번호를 받고 번호로 비밀번호 재설정을 보냅니다. – mgh

+1

나는 다른 목적을 위해 전자 메일을 모두 삭제하도록 허락하지 않을 것이라고 생각합니다. 당신이 내게 말했던 것에서는 당신이 devise 또는 다른 보석을 사용자 지정하려고 시도하지 않고 자신의 단순한 인증 시스템을 만드는 것이 더 좋을 것이라고 생각합니다. – Mandeep

답변

2

당신이 문서를 확인하는 경우가 here을 수행하는 방법을 설명하는 부분이있다.

개인적으로 사용자 설정에서 전자 메일을 제거하지 않고 login이라는 가상 속성을 만들기 위해 제안 된 설명서를 계속 사용하지 않을 것입니다.

전자 메일을 완전히 제거하려면 데이터베이스 테이블에서 필드를 제거하고 모델 유효성 검사에서 해당 필드를 제거하려면 전자 메일을 제거해야합니다. 또한 이메일을 사용자 이름으로 바꾸어보기 또는 부분을 업데이트해야합니다. docs에서 언급 한 것처럼 authentication_keys를 업데이트해야합니다 (로그인 대신 사용자 이름 사용).

+0

사용자가 전자 메일로 등록하도록 허용하고 사용자가 가입해야하는 것을 원하지 않습니다. 개인 확인과 함께 사용자 이름. 나는'email'을'username'으로 바꾸고 devise manager를 덮어 usernmae 유효성 검사를 확인하고 email validation을 제거하기를 원합니다. 이 문서를 통해 사용자 이메일 주소를 얻어야합니다. – mgh

+1

@mgh 나는 당신이 따라야 할 방향에 대한 대답을 업데이트했다. –

+0

음 나는 모든 것을했지만 작동하지 않습니다. 나는 가상 속성 "login"과 다른 것 사이의 연결이 어디에 있는지를 보지 못했다. 그것은 단지 잘못된 이메일을 말한다. – dabadaba

관련 문제