I have the following setup: class Unit has_many :reports end class Report belongs_to :unit end Basically I have a list of units and I want to select the last report for each unit (based on time) and order the resulting last reports by longitude. Sounds simple, but my implementation looks like this: units = current_user.accessible_units report_ids = [] if units.size > 0 units.map(&:id).uniq.each do |id| report = Report.select(:id).where(unit_id: id).order("time desc").limit(1) if !report.empty? report_ids << report.try(:first).try(:id) end end end reports = Report.where(id: report_ids).order("longitude desc") Is there a way to perform this same query using sql (active record relations) and minimize the use of ruby iterators, like map and each? Also notice in query above, I make two hits to the database by querying reports for time and then descending order. Is there a way to eliminate that too? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/dcd64657-0231-4d6a-ad24-6eab7466a493%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.