我有以下用户模型:
class User < ActiveRecord::Base
has_many :competences
has_many :skills, :through => :competences
accepts_nested_attributes_for :skills
end
以及以下技能模型:
class Skill < ActiveRecord::Base
has_many :competences
has_many :users, :through => :competences
end
Competence模型有一个'type'属性,它是连接模型。在嵌套表单中,如何在保存提交的技能时设置'type'属性? 这是嵌套的表单:
<% f.fields_for :skills do |s| %>
<%= s.text_field :name %>
<% end %>
答案 0 :(得分:1)
您需要专门创建Competence对象 - 您不能隐式创建它(一个HABTM)并在其上设置属性。
@user.competences.create(:type => 'something', :skill => @skill)
您的用户模型应接受Competences的嵌套属性,这些属性应接受Skills的嵌套属性。这样的事情会让你走上正轨:
<% f.fields_for :competences do |c| %>
<%= c.text_field :type %>
<% c.fields_for :skills do |s| %>
<%= s.text_field :name %>
<% end %>
<% end %>