Если не хотите вытаскивать все, то сделайте просто отдельныe запросы на кол-во комментариев и последний и уберите из comments из includes.
@comment_cnt = Comment.where(post_id: @category.post_ids)).group(:post_id).count
@comment_last = Comment.where(post_id: @category.post_ids).group(:post_id).having('id = MAX(id)')
Потом просто @comments_last[post_id] и @comment_cnt[post_id]