Использование модели соединения с вложенной формой (has_many: сквозные отношения)

У меня есть Form_for для модели Show. Я хотел бы использовать fields_for внутри form_for для добавления полос. Дело в том, что я не хочу привязывать поля к полосам при использовании формы для обновления записей. Если название группы изменится, я бы хотел обновить представление новой группой.

Шоу объединяются с группами через спектакли

class Show < ActiveRecord::Base
  has_many :performances
  has_many :bands, through: :performances
  accepts_nested_attributes_for :bands
end

class Band < ActiveRecord::Base
  attr_accessible :name, :website, :country, :state
  has_many :performances
  has_many :shows, through: :performances

  validates :name, presence: true, uniqueness: true
end

class Performance < ActiveRecord::Base
  attr_accessible :show, :band
  belongs_to :show
  belongs_to :band
end

Вот моя форма. (Упрощенный)

<%= form_for @show do |f| %>
     #fields
    <%= f.fields_for :bands do |b| %>
      <%= b.text_field :name %>      
    <% end %>
<%end>

Проблема в том, что если это используется для изменения названия группы, это меняет название группы (безумно, верно?). Я не хочу, чтобы он обновлял запись группы - я хочу, чтобы она выполняла Band.find_or_create и обновляла запись исполнения с идентификатором новой группы. Таким образом, пользователи могут заменить группу в шоу, удалив имя и добавив другое имя группы.

Рендеринг HTML должен включать в себя идентификатор производительности, а не идентификатор группы (я думаю)

Что-то вроде:

<input id="show_performance_attributes_1_id" name="show[performance_attributes][1][id]" type="hidden" value="62">

Как это сделать?

1 ответ

Итак, я смог найти решение своего вопроса. Возможно, я не предоставил достаточно деталей в исходном вопросе.

Но решение состоит в том, чтобы просто использовать модель производительности в качестве вложенного поля в Fields_for вместо модели полос. Измените модель шоу на accepts_nested_attributes_for performances и измените модель производительности на accepts_nested_attributes_for band

Другие вопросы по тегам