我正在设计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 %>
错误是没有方法错误或者如果我添加@只返回空字段。有人可以帮忙吗?
答案 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