ruby-on-rails - 为 Devise 用户创建配置文件

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

所以我采取了 Profile model for Devise users? 中描述的步骤
我正在使用 rails 4 和 ruby​​ 1.9.3p448

class User < ActiveRecord::Base

devise :database_authenticatable, :registerable,
       :recoverable, :rememberable, :trackable, :validatable 

attr_accessible :email, :password, :password_confirmation, :remember_me, :profile_attributes
has_one :profile
accepts_nested_attributes_for :profile       


protected

def profile
  super || build_profile
end 

end

#
class Profile < ActiveRecord::Base  
    belongs_to :user
    attr_accessible :uname, :manager
end

#
<h2>Sign up...</h2>
<%= form_for resource, :as => resource_name, :url => registration_path(resource_name) do |f| %>

<%= devise_error_messages! %>

<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>  

<%= f.fields_for :profile do |profile_form| %>
  <h2><%= profile_form.label :uname %></h2>
  <p><%= profile_form.text_field :uname %></p>  
  <h2><%= profile_form.label :manager %></h2>
  <p><%= profile_form.text_field :manager %></p>
<% end %>  

<div><%= f.submit "Sign up" %></div>
<% end %>
<%= render "devise/shared/links" %>

#

仍然无法为用户保存配置文件,这是输出:
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"kG7S9lF4+5hm+ggmKA4LZyXrN4hsPf01jGQvKxgzGGI=", "user"=>{"email"=>"test1@test.test", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "profile_attributes"=>{"uname"=>"1", "manager"=>"1"}}, "commit"=>"Sign up"} **Unpermitted parameters: profile_attributes**

我应该在 Profiles Controller 中做任何事情吗?
提前致谢

最佳答案

我找到了解决方案!
在我的 users/registrations_controller.rb 中,我必须添加以下内容

 before_filter :configure_permitted_parameters, if: :devise_controller?

def configure_permitted_parameters
   devise_parameter_sanitizer.for(:sign_up) {|u| 
     u.permit(:email, :password, :password_confirmation, :remember_me, 
     profile_attributes: [:uname, :manager])}
end

它工作得很好!

关于ruby-on-rails - 为 Devise 用户创建配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18799382/

相关文章:

ruby-on-rails - 设计和多个 "user"模型

ruby-on-rails - Rails 嵌套表单属性不保存

ruby-on-rails - rails 4 : Update user status based on another model conditions

mysql - 使用 RoR 设置 mysql,有 XAMPP

ruby-on-rails - 使用两种设备模型(用户和管理员)登录时的 ActionController::InvalidAuthenticityToken

ruby-on-rails - 在Rails中设置主键的初始值(即第一个对象的ID为1000,而不是1)

ruby-on-rails - 使用设计检查用户是否在登录期间确认

ruby-on-rails - 我如何使用路由别名改进重定向

ruby-on-rails - Jasmine Rice on Rails 4

ruby-on-rails - 为什么 Rails 搞乱参数?