Установить атрибут внутри модели соединения - PullRequest
0 голосов
/ 29 сентября 2010

У меня есть следующая модель пользователя:

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

1 Ответ

1 голос
/ 29 сентября 2010

Вам необходимо создать объект 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 %>
...