I have the following setup:
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)
report_ids << report.try(:first).try(:id)
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?