Как распечатать все элементы, которые принадлежат_ на эту таблицу
-
02-10-2019 - |
Вопрос
Хорошо, я не уверен, что мой титул был достаточно ясен, но я постараюсь объяснить
У меня есть две таблицы: заказы, которые has_many pooks и предметы, которые принадлежат_to заказы. Я только начал изучать ROR и застрял простым заданием. Все, что я хочу, это отображать заказы и связанные с ними такие предметы:
Заказ 1:
Пункт 1.
Пункт 2.
Заказ 2:
Пункт 1.
Пункт 2.
...
Я знаю, как отображать заказы или предметы отдельно, я знаю, как отображать заказы предметов (item.forder.id), но как отображать заказы и элементы в таблице, как выше? В шаблоне, где я отображаю заказы, я мог пройти через каждый элемент каждой итерации и сравнить его зарубежную запись_id с помощью order.id, но это было бы неловко. Я предполагаю, что я должен получить предметы в какой-то многомерный хеш, где ключ будет order_id, а затем я мог бы просто обратиться к этому хеш-хеш, и получите все элементы в нем, но я не уверен, что это правильно.
Я надеюсь, что я написал здесь понятно.
Решение
Когда вы определяете has_many
Соотношение, вы автоматически получаете методы запроса этих объектов. В этом случае метод order.items
.
Так что вы можете сделать:
Order.find_each do |order|
puts "Order #{order.id}:"
order.items.each do |item|
puts "Item #{item.id}"
end
end
(Я использовал find_each. Метод, который доступен из рельсов 2.3+. Вы могли бы использовать простой Order.all.each
хотя.