Я думаю, что лучшим и наиболее эффективным решением здесь является использование опции touch
:
class Post < ActiveRecord
belongs_to :thread, :touch => true
end
Так что вы сможете найти последние активные темы так же просто, как:
Thread.order("updated_at DESC").limit(10)
Как насчет запроса ... Вы можете попытаться найти его через дочерние объекты:
active_threads = Post.includes(:threads).order("created_at DESC").all.map(&:thread).uniq