これを試してみると、ジョイナーモデルが保存されていません(Account has_many :users, through: :roles
その逆も同様です)。
def new
@account = current_user.accounts.build
end
def create
@account = current_user.accounts.build(params[:account])
@account.save # does not save the joiner model
end
これにより、@ accountと、whereuser_id=current_user.id
および。のロールレコードが作成されますaccount_id: @account.id
。@accountのみが保存されます。ロールモデルにはレコードがありません。結果は、コンソールを使用して一貫しています。
アクションで置換current_user.accounts.build
するとcurrent_user.accounts.create
、create
ジョイナー(ロールレコード)モデルが保存されます。このため、これは検証の問題ではないと思います。Rails3.2.3を使用しています。
モデル:
class User < ActiveRecord::Base
has_many :roles
has_many :accounts, through: :roles
end
class Account < ActiveRecord::Base
has_many :roles
has_many :users, through: :roles
accepts_nested_attributes_for :users
end
class Role < ActiveRecord::Base
attr_accessible
belongs_to :users
belongs_to :accounts
end
意見
<%= simple_form_for(@account) do |f| %>
<%= render 'account_fields', f: f %>
<%= f.submit %>
<% end %>