具有嵌套的has_one关系而不保存的表单

时间:2013-11-01 04:32:03

标签: ruby-on-rails ruby devise has-one

我有一个与Profile模型具有has_one关系的User模型。表单生成正确(我看到contact_person的附加字段),但在创建新记录时,只保存用户。我错过了什么?

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable

  has_one :profile
  accepts_nested_attributes_for :profile
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

这是我的表格:

<% @user.build_profile if @user.profile.nil? %>
<%= f.fields_for :profile do |profile| %>
  <%= profile.label :contact_person %>
  <%= profile.text_field :contact_person %>
<% end  %>

2 个答案:

答案 0 :(得分:1)

您必须在用户模型中添加attr_accessible:profile_attributes。

  class User < ActiveRecord::Base

    attr_accessible :profile_attributes

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

      has_one :profile
      accepts_nested_attributes_for :profile
    end

答案 1 :(得分:0)

所以,我在Wiki的using Devise and strong parameters上找到了解决我问题的信息。