Ruby on Rails:设计 gem,将 "name" 添加到用户模型

Ruby on Rails: Devise gem, adding a "name" to a User model

所以我有原始版本的设计,其中用户通过他们的电子邮件地址进行身份验证。但是,我想添加一个选项让用户输入他们的名字,如果它不是唯一的,这当然无关紧要,它只是为了显示目的;如何自定义设计表单?我的用户模型中已经有一个 :name 属性,表单如下所示:

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

      # This field not working
      <div class="field">
        <%= f.text_field :name, autofocus: true, placeholder: "What is your nickname?" %>
      </div>


      <div class="field">
        <%= f.email_field :email, placeholder: "Enter your email address" %>
      </div>

      <div class="field">
        <%= f.password_field :password, autocomplete: "off",
            placeholder: "Enter your password" %>
      </div>

      <div class="field">
        <%= f.password_field :password_confirmation, autocomplete: "off",
            placeholder: "Confirm your password" %>
      </div>

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

我哪里错了?当用户注册时,名称显示为空白并且未注册到数据库中...

我认为您的问题与 Strong Params 有关。将此添加到您的 ApplicationController.

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :user
  end
end

来源:https://github.com/plataformatec/devise#strong-parameters