Как напечатать все элементы, принадлежащие этой таблице - PullRequest
1 голос
/ 04 июля 2010

Хорошо, я не уверен, что мой заголовок был достаточно ясен, но я попытаюсь объяснить

У меня есть две таблицы: заказы, в которых есть_популярные элементы, и элементы, которые принадлежат_заказам.Я только начал изучать RoR и придерживался простой задачи.Все, что я хочу, это отображать заказы и связанные с ними элементы, такие как:

Заказ 1:
Элемент 1
Элемент 2

Заказ 2:
Элемент 1
Элемент2
...

Я знаю, как отображать заказы или элементы отдельно, я знаю, как отображать заказы элементов (item.order.id), но как отображать заказы и элементы в таблице, например:выше?В шаблоне, где я отображаю ордера, я могу проходить каждый элемент на каждой итерации и сравнивать его посторонний order_id с order.id, но это будет неудобно.Я полагаю, что я должен поместить элементы в некий многомерный хеш, где ключом будет order_id, а затем я могу просто обратиться к этому хешу по идентификатору заказа и получить все элементы в нем, но я не уверен, что это правильно.

Надеюсь, то, что я здесь написал, понятно.

1 Ответ

3 голосов
/ 04 июля 2010

Когда вы определяете отношение 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 , который доступен из Rails 2.3+.Вы можете использовать простой Order.all.each.

...