【问题标题】:How to add extra field in devise auth rails如何在设计 auth rails 中添加额外的字段
【发布时间】:2015-08-11 09:53:51
【问题描述】:

我正在使用设计进行身份验证。我还需要额外的字段名称和用户类型。这是迁移:

class AddColoumnToUsers < ActiveRecord::Migration
  def change
        add_column :users, :name, :string
        add_column :users, :type, :string
  end
end

然后是注册字段

  <%=simple_form_for(resource, as: resource_name, url: registration_path(resource_name), :html => {:class => 'form-horizontal' }) do |m| %>

              <%= m.input :name%>
              <%=m.input :email %>
              <%=m.input :password %>
              <%=m.input :password_confirmation %>

          <%=m.button :submit %>


    <% end %>

一切正常,但是在注册之后,如果我尝试按名称欢迎用户,则为空或错误。

我喜欢在个人资料中这样做

<%= current_user.name %>

错误不是方法错误,或者如果我添加 @ 只是返回空字段。有人可以帮忙吗?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-4 authentication devise


【解决方案1】:

您必须覆盖设计的注册控制器

首先创建一个控制器文件为app/contollers/registrations_controller.rb 并在该文件中写入以下代码

    class RegistrationsController < Devise::RegistrationsController

      private

      def sign_up_params
        params.require(:user).permit!
      end

      def account_update_params
       params.require(:user).permit!
      end
    end

或代替许可!你可以像这样添加参数

params.require(:user).permit(:name, :type, .......'other user paramete')

您的路线文件中的最终更改如下所示

devise_for :users, controllers: { registrations: 'registrations' }

【讨论】:

  • 你在上面写了路由而不是'devise_for:users'否则它会重复..所以只写一次
【解决方案2】:

添加你的应用控制器

before_action :configure_permitted_parameters, if: :devise_controller?



protected

  def configure_permitted_parameters
    registration_params = [ :name, :type, :email, :password, :password_confirmation ]
    devise_parameter_sanitizer.for(:sign_up) {
      |u| u.permit(registration_params)
    }
  end

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多