Devise に新しいユーザーを登録する際、同時にこの新しいユーザーへの新しい Family オブジェクト リンクを作成する必要があります (ユーザーは家族の長です)。
私の家族モデル:
belongs_to user
私のユーザーモデル:
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :family
has_one :family
accepts_nested_attributes_for :family
devise/registration/new.html.erb で
<%= simple_form_for([resource, Family.new], :as => resource_name, :url => registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f| %>
<%= f.error_notification %>
<%= display_base_errors resource %>
<%= f.input :name, :autofocus => true %>
<%= f.input :email, :required => true %>
<%= f.input :password, :required => true %>
<%= f.input :password_confirmation, :required => true %>
<% f.fields_for :family do |family_form| %>
<p><%= family_form.label :name %></p>
<p><%= family_form.text_field :name %></p>
<% end %>
<%= f.button :submit, 'OK', :class => 'btn-primary' %>
<% end %>
しかし、これは機能していません。このような質問がいくつか見つかりましたが、それを修正できませんでした。
何か案が ?
更新 1
次のエラーが発生しました。
undefined method `email' for #<Family:0x007f892a12c310>
ファミリーは名前だけで、メールが無いモデルです。新しいユーザーを作成するときに、名前を付けて新しい Family オブジェクトを作成できるようにする必要があります (それをユーザーにリンクすることもできます)。
更新 2
登録コントローラーに resource.build_family を追加しました。ファミリ オブジェクトは正しく作成され、ユーザに関連付けられています (デバッグ用に new.html.erb に <%= resource.family %> を表示できます) が、ファミリのフォームは表示されません。