我正在尝试向Devise提供的用户模型添加一个name属性。我在数据库中添加了一个"name“列,并更改了注册视图,使其要求输入用户名:
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :name %><br />
<%= f.text_field :name %></p>
<p><%= f.label :email %><br />
<%= f.email_field :email %></p>
<p><%= f.label :password %><br />
<%= f.password_field :password %></p>
<p><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></p>
<p><%= f.submit "Sign up" %></p>
<% end %>
<%= render :partial => "devise/shared/links" %>
它允许我登录,但是当我这样做之后检查数据库时,name: nil
。我是否必须添加一些东西到Devise的User
控制器或其他东西?谢谢!
发布于 2011-08-17 06:29:31
Rails 3
在你用户模型中定位;
attr_accessible :email, :password, :password_confirmation, :remember_me
和添加:名称在末尾
发布于 2017-05-27 02:06:05
Rails 5(实际上是设计4)
测试对象: rails 5.1.0 (devise 4.2.1)
不需要使用devise控制器。
只需将以下内容添加到您的application_controller.rb
中
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name])
end
devise_parameter_sanitizer.for
不再适用于Rails5(更准确地说,Devise4不支持它,它是Rails5上下文中预期的devise版本):使用devise_parameter_sanitizer.permit
来避免undefined method 'for' for #<Devise::ParameterSanitizer
错误
发布于 2014-02-25 06:57:40
对于Rails 4
像这样使用
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:username, :email, :password, :password_confirmation, :remember_me) }
devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:login, :username, :email, :password, :remember_me) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) }
end
在末尾添加其他字段。
https://stackoverflow.com/questions/7085669
复制相似问题