以下是我的模特。
Restaurant has many patrons
patrons have many transactions
在控制器索引中,所有顾客都喜欢
@pts = Restaurant.find(1).patrons
并且在视图中我只列出了顾客属性,包括每个顾客的交易数量,如
我如何按每个顾客的交易计数订购结果集(@pts)?
由于
答案 0 :(得分:0)
假设你没有太多的顾客并且你没有使用计数缓存(transactions_counter
),你可以这样做:
@pt.sort_by{|p|p.transactions.count}.each do |patron|
...
或者你可以设置一个计数器缓存并在sql中执行(你可以在没有但查询更麻烦的情况下完成)
将transactions_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调用中并简化操作。
答案 1 :(得分:-1)
这将按ID排序。 把它放在模型中。
has_many :patrons, :order => "id DESC"