我在数据库中创建了一个username
列。现在我想删除email
,然后用户sign up
只需username
。为此,我可以在sign up
页面创建username
字段,但是我必须再次填写电子邮件字段,即服务器创建新用户,否则,我会收到电子邮件字段的验证错误。 如何删除电子邮件验证并将其替换为用户名的个人验证?然后用户只需注册输入username
和password
? 我有下面的代码:设计:使用用户名注册
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" %>
有几个问题适合您。由于您完全删除电子邮件字段,因此您将如何向用户发送确认说明?你将如何发送密码重置指令给用户? – Mandeep 2014-08-29 15:47:14
用户不能自行创建账户,Superadmin通过用户名创建新用户,如果用户忘记密码,superadmin可以重置密码。我获得用户电话号码并将密码重置为其号码。 – mgh 2014-08-29 16:26:28
我不认为设计会让你删除所有电子邮件,因为它需要它用于其他目的。从你告诉我,我认为它会更好,如果你创建自己的简单认证系统,而不是试图定制设计或其他宝石 – Mandeep 2014-08-29 16:34:08