同様の質問を見たことがありますが、必要なものと正確に一致する回答はありません。そこにあるとしたら、私はそれを見たことがない。私はRails 3.1、Ruby 1.9.2をHeroku Cedarスタックにデプロイしています(したがって、postgresを使用しています)
私はこのモデルを持っています:
class User
has_many :orders
end
class Order
belongs_to :user
#scope :last_for_each_user, ???
#scope :first_for_each_user, ???
end
すべてのユーザーの最初の注文であるすべての注文と、すべてのユーザーの最後の注文であるすべての注文を返すスコープ (またはメソッド) が必要です。私の最初の本能は、SQLite3 の :last_for_each_user で問題なく機能した GROUP BY を使用することでしたが、Postgres では、GROUP BY 句に含まれていないか、集計関数の一部として選択されている列を選択できません。完全に形成された順序が必要です。オブジェクト (つまり、すべての列、orders.*)。
何か案は?テーブル全体を選択してRubyで並べ替えたくありません。それは気分が悪いだけで、記憶に保持することはたくさんあります.