:include
используется, когда вам понадобится получить доступ к подписи позже. Если все, что вам нужно, это количество связанных подписей для сортировки, то вам не нужно :include
.
Мне не особенно нравится следующее, но, похоже, оно работает:
Proposal.find(:all,
:limit => 3,
:joins => :signatures,
:group => 'proposals.id',
:order => 'count(proposals.id) desc')
Во-первых, параметр :joins
означает, что для каждой записи Предложения вы получите еще одну строку в выходных данных для каждой связанной Подписи. Параметр :group
объединяет эти строки в одну, но только после сортировки параметра :order
на основе количества строк для каждого offer.id (и, следовательно, количества подписей).
Я подозреваю, что есть лучший способ, но, похоже, это работает.