私は、ユーザーhas_one companyとcompanyがユーザーに属しているユーザーと企業モデルを持っています。私は、会社のフィールドを登録フォームから会社テーブルに保存したがっています。会社テーブルの列はuser_idとcompany_nameです。私は私のUser.rb登録フォームのネストされた属性
に has_one :company, :class_name => 'Company', :foreign_key => :user_id, :dependent => :destroy
accepts_nested_attributes_for :company
これを行うには、以下の使用と私の登録フォームはこのようになります
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :firstname %><br/>
<%= f.text_field :firstname %></p>
<p><%= f.label :lastname %><br/>
<%= f.text_field :lastname %></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>
<%= fields_for :company do |builder| %>
<%= builder.label :company %>
<td><%= builder.text_field :company_name%> </td>
<% end %>
<p><%= f.submit "Sign up" %></p>
<% end %>
<%= render :partial => "devise/shared/links" %>
は、それが会社のテーブルのためのuser_idのための隠しフィールドを持っているか、それが得る必要です自動的に追加されました、私はまたそれが動作する登録コントローラの作成メソッドをオーバーライドしようとしましたが、deviseのエラーメッセージが動作していません。誰もがこれで私を助けることができます。私は逃したものを知りません。前もって感謝します。
alony私は今、私が作成していない1つのIまでの企業モデルのための別々のコントローラを持っている必要がありますユーザー登録のためにdeviseを使用しています。私は自分のビューでfields_forを作成しました。 –
いいえ、間違いなく。実際には、コールバックのUserモデルでそれを行うことができます: 'def after_initialize {| record | record.company.emptyの場合はrecord.company.build? } ' – alony
ありがとうございました。私がやった間違いは、最初の解決策が働いている私のUserモデルのattr_accessibleにcompany_attributesを設定しなかったことでした。返事が遅れて申し訳ありません –