Я не уверен, что это возможно без самостоятельного создания запроса.Проблема в том, что рельсы справляются с энергичной загрузкой не так хорошо, когда вы начинаете получать все условно или пытаетесь ограничить результаты.Вы можете сделать включения, почти выполнив то, что вы хотите, создав другую ассоциацию:
class Category < ActiveRecord::Base
has_one :last_post, :class_name => "Post", :foreign_key => "category_id", :order => "created_at desc"
end
Затем вы можете использовать обычно:
Category.includes(:last_post).all
Но проблема в том, чтоSQL это генерирует, он по-прежнему выбирает все сообщения из категорий, даже если при вызове category.last_post он возвращает только последнее сообщение.Будет сгенерирован sql, подобный этому:
SELECT `categories`.* FROM `categories`
SELECT `posts`.* FROM `posts` WHERE (`posts`.category_id IN (1,2)) ORDER BY created_at desc