ここ数日、ユーザーにアカウントを追加しようとしています。
問題なくDeviseをインストールしましたが、登録フォームに会社名フィールドを追加したいと思いました。
これが私のコードです:
アプリ/モデル/account.rb
class Account < ActiveRecord::Base
attr_accessible :name
has_many :users
accepts_nested_attributes_for :users
end
アプリ/モデル/user.rb
class User < ActiveRecord::Base
belongs_to :account
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
attr_accessible :first_name, :last_name, :account_attributes, :account, :email, :password, :password_confirmation, :remember_me
end
アプリ/ビュー/デバイス/登録/new.html.erb
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :first_name %><br />
<%= f.text_field :first_name %></div>
<div><%= f.label :last_name %><br />
<%= f.text_field :last_name %></div>
<%= f.fields_for :account do |account_form| %>
<div><%= account_form.label :name %><br />
<%= account_form.text_field :name %></div>
<% end %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
これが私が持っているすべてのコードです。私はこれ以上何も変えていません。
そして、これは私が得たエラーです:
Account(#2175324980) expected, got ActiveSupport::HashWithIndifferentAccess(#2169631580)
前もって感謝します。
編集
私は解決策を見つけました:
私は変わった
<%= f.fields_for :account do |account_form| %>
に
<%= f.fields_for :account_attributes, resource.account do |account_form| %>
今、私は :plan を account_form に追加しようとしています。
Can't mass-assign protected attributes: plan
編集2
わかりました、新人ミス。:plan をアカウント モデルに追加しました。
その後、クエリ エラーが発生しました。DB のいくつかのフィールドを null => false から null => true に変更しました。