我看過類似的問題,但沒有找到與我需要的答案完全匹配的答案。如果它在外面,我還沒有看到它。我on Rails的3.1,紅寶石1.9.2,部署在Heroku上雪松堆棧(所以我使用的是Postgres)RoR/Postgres查詢所有父母的第一個或最後一個子對象
我有了這個模型:
class User
has_many :orders
end
class Order
belongs_to :user
#scope :last_for_each_user, ???
#scope :first_for_each_user, ???
end
我需要的範圍(或方法)返回所有用戶的第一個訂單的所有訂單,以及所有用戶的最後一個訂單的所有訂單。我的第一個直覺是使用GROUP BY,它在SQLite3中的last_for_each_user上工作正常,但Postgres不會讓你選擇不在GROUP BY子句中或作爲聚合函數的一部分選擇的列,而且我需要完全形成的命令對象(即所有的列,命令。*)。
任何想法?我不想選擇整個表並在Ruby中對其進行排序。這只是感覺不對,而且要記住很多東西。
什麼'Order.where(ID:Order.select( 「分鐘(orders.id)的ID」)組( 「orders.user_id」)。)'? – cbliard