Есть четыре модели:
class Festival < ActiveRecord::Base
has_many :deadlines
has_many :categories
end
class Deadline < ActiveRecord::Base
belongs_to :festival
has_many :fees
end
class Category < ActiveRecord::Base
belongs_to :festival
has_many :fees
end
class Fee < ActiveRecord::Base
belongs_to :deadline
belongs_to :category
end
Делаю форму для Festival, внутри которой поля для дочерних объектов.
<%= form_for @festival do |festival_form| %>
<div id="deadlines_fields">
<%= festival_form.fields_for :deadlines do |deadline_fields| %>
<%= render 'deadline_fields', f: deadline_fields %>
<% end %>
</div>
<%= link_to_add_association '', festival_form, :deadlines %>
<div id="categories_fields">
<%= festival_form.fields_for :categories do |category_fields| %>
<%= render 'category_fields', f: category_fields %>
<% end %>
</div>
<%= link_to_add_association '', festival_form, :categories %>
<% end %>
<!--deadline_fields.html.erb-->
<div class="nested-fields">
<%= f.text_field :name %>
<%= f.date_field :date %>
<%= link_to_remove_association '', f %>
</div>
<!--category_fields.html.erb-->
<div class="nested-fields">
<%= f.text_field :name %>
<%= link_to_remove_association '', f %>
<div id="fees_fields">
<%= f.fields_for :fees do |fee_fields| %>
<%= render 'fee_fields', f: fee_fields %>
<% end %>
</div>
</div>
<!--fee_fields.html.erb-->
<div class="nested-fields">
<p><%= f.object.deadline.name %>:</p>
<%= f.number_field :price %>
</div>
Мне нужна следующая логика в форме. При добавлении Dedline, должны добавться Fee в каждую Category. При отправке формы, Category сохраняются нормально, Fee вложенные в Category тоже сохраняются правильно, но у Fee нет deadline_id. Что сделать чтобы Fee сохранялись одновременно как потомок Category и как потомок Deadline?
По идее для этого нам нужно скрытое поле с name="festival[categories_attributes][0][fees_attributes][0][dedline_id]", но пока форма не отправлена, deadline_id еще не присвоен. Что делают в таком случае?
Update. Перечитал свой вопрос, возможно непонятно написал что должно происходить в форме. link_to_add_association и link_to_remove_association это хелперы которые рендерят ссылку, при нажатии на которую добавляются/удаляются поля для нового объекта. При добавлении полей для Deadline, должны добавится новые поля для Fee. Каким образом в новых полях для Fee указать что этот новый Fee должен принадлежать новому Deadline?