我在数据库中创建了一个username
列。现在我想删除email
,然后只需sign up
删除用户username
。为此,我可以在username
页面中创建sign up
字段,但我必须再次填写服务器创建新用户的电子邮件字段,否则,我会收到电子邮件字段的验证错误。 如何删除电子邮件验证并将其替换为用户名的个人验证?然后用户只需输入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" %>
答案 0 :(得分:2)
如果您查看文档,则会有一节说明如何执行此操作{。{3}}。
就个人而言,我不会从用户设置中删除该电子邮件,并坚持使用文档上的建议创建一个名为login的虚拟属性。
如果要完全删除电子邮件,则需要通过迁移将其删除,以便从数据库表中删除该字段并将其从模型验证中删除。 您还需要使用用户名替换电子邮件来更新您的视图或部分内容。请注意,您需要像在文档上提到的那样更新authentication_keys(使用用户名而不是登录名)