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

コンピテンス モデルには「タイプ」属性があり、結合モデルです。ネストされたフォーム内で、送信したスキルを保存するときに「type」属性を設定するにはどうすればよいですか? ネストされたフォームは次のとおりです。

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

1 に答える 1

1

Competence オブジェクトを明確に作成する必要があります。暗黙のうちに (HABTM のように) 作成したり、属性を設定したりすることはできません。

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

ユーザー モデルは、コンピテンスのネストされた属性を受け入れる必要があり、スキルのネストされた属性を受け入れる必要があります。このようなものは、あなたを正しい軌道に乗せるはずです:

<% 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 に答える