Czy i dlaczego metoda map jest wolniejsza od zapytania SQL?

self.rsvps.map {|rsvp| rsvp.user }

Jak powinienem to przepisać używając SQL?

rsvps.include(:user)

(zakładając że masz asocjację)

Odpowiadając na pytanie zawarte w tytule: bo po pierwsze bazy danych są zoptymalizowane pod kątem takich operacji (indeksy!), a po drugie jest spory narzut wykonywania n zapytań o jeden wiersz tabeli users dla każdego rsvp.

najszybciej można to zrobić tak:

User.joins(:rsvps => :event).where("rsvps.event_id = ?", Event.last.id).all

Wg moich prób :slight_smile: