Вы можете сделать это так:
users = User.all(:limit => X, :joins => {:race_weeks => :races}, :order => "reces.fastest_time DESC").uniq
Если вы правильно указали has_many :through
связь, то вы можете сделать это так:
users = User.all(:limit => X, :joins => :races, :order => "reces.fastest_time DESC").uniq
В этом решении вы получаете то, что хотите, одним запросом, но двумя объединениями. И этот uniq
метод не очень хорош, если вы не используете маленький X.