0

我有以下用户模型:

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

能力模型有一个“类型”属性,它是连接模型。在嵌套表单中,如何在保存提交的技能时设置“类型”属性?这是嵌套形式:

<% f.fields_for :skills  do |s| %>
   <%= s.text_field :name %>
<% end %>
4

1 回答 1

1

您需要专门创建 Competence 对象——您不能隐式创建它(a la HABTM)并在其上设置属性。

@user.competences.create(:type => 'something', :skill => @skill)

您的 User 模型应该接受 Competences 的嵌套属性,它应该接受 Skills 的嵌套属性。这样的事情应该让你走上正轨:

<% f.fields_for :competences do |c| %>
  <%= c.text_field :type %>
  <% c.fields_for :skills do |s| %>
    <%= s.text_field :name %>
  <% end %>
<% end %>
于 2010-09-29T16:19:21.643 回答