порядок по ассоциации - PullRequest
0 голосов
/ 19 июня 2010

Вот мои модели.

Restaurant has many patrons
patrons have many transactions

В индексе контроллера все патроны вроде

@ pts = Restaurant.find (1) .patrons

и я просто перечисляю атрибуты патронов, включая количество транзакций на патронов, например

Как бы я упорядочил набор результатов (@pts) по количеству транзакций каждого патрона?

Спасибо

Ответы [ 2 ]

0 голосов
/ 19 июня 2010

Предполагая, что у вас не слишком много покровителей, и вы не используете кэш счетчиков (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 и упростить вещи.

0 голосов
/ 19 июня 2010

Это будет заказ по идентификатору. Поместите это в модель.

  has_many :patrons, :order => "id DESC"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...