设计注册,创建一个has_one记录

时间:2012-11-28 06:03:28

标签: ruby-on-rails devise

当用户使用设计注册时,我正在尝试创建提供者记录。我按照以下方式进行了设置: Devise: User belongs_to organization

但是没有创建提供者。我能做错什么?

用户has_one提供商。
我修改了我的注册表单:

<%= fields_for :provider do |provider_fields| %>
      <%= provider_fields.label :name, :label => 'Company Name' %>
      <%= provider_fields.text_field :name %>
 <% end %>

我的模特

attr_accessible :email, :password, :password_confirmation, :remember_me, :first_name, :last_name,  :provider_attributes
    belongs_to :provider
     accepts_nested_attributes_for :provider

我可以在rails的输出中看到:

 "provider"=>{"name"=>"kjhkjh"},
提交表单时,用户属性中的

2 个答案:

答案 0 :(得分:1)

虽然我看不到完整的用户注册表单来确定您传递给表单构建器的块变量,但我认为它是|f|。如果是,则需要将f加到fields_for前面。

f.fields_for :provider

这样,你在你的参数中传递:provider_attributes,而不仅仅是提供者。我看到你已经将:provider_attributes添加到了attr_accessible(另一个常见问题),所以现在你只需要确定这就是你的传递!

来源:http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for

答案 1 :(得分:0)

啊哈哈!自救。 :)

似乎有必要创建提供者模型,如果它的nil,那么帮助者知道要做什么(或什么)

所以我把它添加到模型中:

 def provider
    super || build_provider
  end

How to get devise to work with accepts_nested_attributes_for in a has one relationship?