"Zagnieżdżone" kolekcje w widoku

Mam w kontrolerze kolekcję obiektów z bazy danych, powiedzmy:

@users

.
Każdy z nich połączony jest poprzez asocjację has_many z odpowiednimi rekordami tabeli posts. W jaki sposób najoptymalniej wyświetlić posty w widoku tak, by były pogrupowane względem usera? Czy trzeba zagnieździć iteracje w sposób:

<% @users.each do |user| %> <% user.posts.each do |post| %> ... <% end %> <% end %>
?
Czy da się zrobić to jednak w sprytny sposób zrobić jakoś bardziej elegancko, w jednym zapytaniu SQL - a i najlepiej tak, by wszystkie zapytania do bazy były w kontrolerze?

Da się, służy do tego metoda includes - wówczas nie zmieniasz widoku, w kontrolerze/modelu robisz tylko User.includes(:posts)
Poczytaj sobie o tym tutaj: http://guides.rubyonrails.org/active_record_querying.html

Gwoli ścisłości - jedno zapytanie SQL nie zawsze jest bardziej wydajne niż kilka (w szczególności dwa). Z tego co się orientuję, to AR przy wywołaniu includes realizuje to własnie jako 2 zapytania.

Wielkie dzięki za odpowiedzi. :wink: