Предполагая, что у вас не слишком много покровителей, и вы не используете кэш счетчиков (transactions_counter
), вы можете сделать это так:
@pt.sort_by{|p|p.transactions.count}.each do |patron|
...
Или вы можете настроить счетчиккэшировать и делать это в SQL (вы можете сделать это без, но запросы немного раздражают)
добавить транзакции_counter в таблицу покровителей и
class Patron < ActiveRecord::Base
has_many :transactions, :counter_cache => true
#...
end
Затем вы можете отсортировать поВаш запрос:
@pts = Restaurant.find(1).patrons.all :order => "patrons.transactions_counter DESC"
Вы даже можете добавить это к своему вызову has_many и упростить вещи.