Обновление дополнительных атрибутов в отношении has_many:: through с использованием Rails

Мне удалось установить отношения многие ко многим между следующими моделями

ПерсонажиНавыкиPlayerSkills

У PlayerSkills сейчас есть атрибут, которого обычно нет у навыков: уровень.

Модели выглядят примерно так (отредактировано для краткости):

class PlayerSkill < ActiveRecord::Base
  belongs_to :character
  belongs_to :skill
end

class Skill < ActiveRecord::Base
  has_many :player_skills
  has_many :characters, :through => :player_skills

  attr_accessible :name, :description
end

class Character < ActiveRecord::Base
  belongs_to :user

  has_many :player_skills
  has_many :skills, :through => :player_skills
end

Так что в моделях нет ничего особенного ... Контроллер на этом этапе тоже очень простой ... это в значительной степени стандартное действие по обновлению.

Форма, которую я хочу изменить, это символы # edit. Прямо сейчас он отображает серию флажков, которые добавляют / удаляют навыки персонажей. Это здорово, но весь смысл использования has_many: through заключался также в отслеживании «уровня».

Вот что у меня так далеко:

- form_for @character do |f|
  = f.error_messages
  %p
    = f.label :name
    %br
    = f.text_field :name
  %p
    = f.label :race
    %br
    = f.text_field :race
  %p
    = f.label :char_class
    %br
    = f.text_field :char_class
  %p
    - @skills.each do |skill|
      = check_box_tag "character[skill_ids][]", skill.id, @character.skills.include?(skill)
      =h skill.name
      %br
  %p
    = f.submit

После рендеринга «skill.name» мне нужно напечатать текстовое поле, которое обновляет player_skill.

Проблема, конечно, в том, что player_skill может существовать или не существовать! (В зависимости от того, был ли флажок уже установлен при загрузке формы!)

Из всего, что я прочитал, has_many: through отлично подходит, потому что позволяет вам рассматривать сами отношения как сущность ... но я совершенно не понимаю, как обращаться с сущностью в этой форме.

Как всегда, заранее спасибо за любую помощь, которую вы можете оказать мне!

Ответы на вопрос(1)

Ваш ответ на вопрос