Я думаю, что самое простое, что вы могли бы сделать, это добавить область действия в вашу модель Location
, чтобы вернуть самое последнее местоположение.
Хотя это и не дает того же SQL, что вы написали вручную, оно должно давать те же результаты.
location.rb
scope :most_recent, -> { order(created_at: :desc).limit(1) }
Тогда что-то вроде:
user = User.last
user.locations.most_recent
Это должно дать вам этот вывод SQL, который вернет самое последнее созданное местоположение для пользователя.
SELECT "locations".* FROM "locations" WHERE "locations"."user_id" = $1 ORDER BY "locations"."created_at" DESC LIMIT 1