当我尝试这个时,连接器模型没有被保存(假设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
为,加入者(角色记录)模型被保存。出于这个原因,我不认为这是一个验证问题。我正在使用 Rails 3.2.3。current_user.accounts.create
create
楷模:
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 %>