在连接模型中设置属性

时间:2010-09-29 15:41:12

标签: ruby-on-rails nested-forms

我有以下用户模型:

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 %>

1 个答案:

答案 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 %>