Здесь вам не нужны соединяемые таблицы - скорее столбец родительского идентификатора в дочерней записи.Итак, в вашем случае:
Child
нужен целочисленный столбец parent_id
Funding
нужен целочисленный столбец child_id
Объединение таблиц вступает в игру только тогда, когда вы реализуете отношения has_and_belongs_to_many
или has_many through
.
Если вы думаете о том, как вы связываете записи, чтобы ребенок принадлежал родителю, ребенок простоему нужно знать, к какому родителю он привязан, отсюда и столбец.
Теперь представьте, что у родителей было много детей, у детей было много родителей: идентификатор одного родителя не уменьшал бы его, поэтому объединяющая таблица вступает в связьдва вместе, содержащие (например) оба parent_id
и child_id
в каждой строке данных.
База данных связывает записи вместе, используя эти методы, запрашивая идентификатор или таблицу присоединения по мере необходимости.
Чтобы получить доступ к фондам из родительской записи, вы можете связать их вместе, если они независимысвязанные или доступ через детей, если нет.
Для последнего, вы можете использовать что-то вроде следующего.
В вашем контроллере:
@parents = Parent.includes(children: :fundings) # includes preloads the data, avoiding expensive N + 1 queries
На ваш взгляд:
<% @parents.each do |parent| %>
<#% whatever you want to display regarding the parent here %>
<% parent.children.each do |child| %>
<#% whatever you want to display regarding the child here %>
<% child.fundings.each do |funding| %>
<#% whatever you want to display regarding the funding here %>
<% end %>
<% end %>
<% end %>
Это немного грязно, поэтому стоило бы разделить данные в контроллере или партиалы в соответствии с требованиями.Надеюсь, это даст вам представление о том, как это сделать?