我看过类似的问题,但没有找到与我需要的答案完全匹配的答案。如果它在外面,我还没有看到它。我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