设计:使用用户名注册

时间:2014-08-28 15:06:58

标签: ruby-on-rails devise

我在数据库中创建了一个username列。现在我想删除email,然后只需sign up删除用户username。为此,我可以在username页面中创建sign up字段,但我必须再次填写服务器创建新用户的电子邮件字段,否则,我会收到电子邮件字段的验证错误。 如何删除电子邮件验证并将其替换为用户名的个人验证?然后用户只需输入usernamepassword即可注册? 我的代码如下:

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" %>

1 个答案:

答案 0 :(得分:2)

如果您查看文档,则会有一节说明如何执行此操作{。{3}}。

就个人而言,我不会从用户设置中删除该电子邮件,并坚持使用文档上的建议创建一个名为login的虚拟属性。

如果要完全删除电子邮件,则需要通过迁移将其删除,以便从数据库表中删除该字段并将其从模型验证中删除。 您还需要使用用户名替换电子邮件来更新您的视图或部分内容。请注意,您需要像在文档上提到的那样更新authentication_keys(使用用户名而不是登录名)