如何在设计auth rails中添加额外的字段

时间:2015-08-11 09:53:51

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

我正在设计auth。我还需要额外的字段名称和用户类型。这是迁移:

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

一切正常,但是在reg之后如果我试图通过名字欢迎用户变空或出错。

我在个人资料中喜欢这个

<%= current_user.name %>

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

2 个答案:

答案 0 :(得分: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' }

答案 1 :(得分:0)

添加您的应用程序控制器

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