Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Activerecord获取多个最新记录_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails Activerecord获取多个最新记录

Ruby on rails Activerecord获取多个最新记录,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我有以下简化表格: | id | order_id | created_at | | 1 | 1 | 2011-07-11 | | 2 | 1 | 2011-07-12 | | 3 | 2 | 2011-07-13 | | 4 | 2 | 2011-07-14 | 现在,我正在尝试获取订单列表的所有记录,但仅获取每个订单id的最新记录 EdpuOrder.find(:all, :conditions =>

我有以下简化表格:

| id | order_id | created_at |  
| 1  |  1       | 2011-07-11 |  
| 2  |  1       | 2011-07-12 |  
| 3  |  2       | 2011-07-13 |  
| 4  |  2       | 2011-07-14 | 
现在,我正在尝试获取订单列表的所有记录,但仅获取每个订单id的最新记录

EdpuOrder.find(:all, :conditions => "edpu_orders.order_id IN (#{ids})", :order => "edpu_orders.created_at")

ids变量是由一个子查询生成的,现在假设它是“1,2”。上述语句应返回记录2和4。有什么想法吗?

找到一种将ID放入数组的方法

ids = [1, 2]
EdpuOrder.where(:order_id => ids).order(:created_at)
顺便说一句,这只适用于Rails 3及以上版本。

尝试此范围(我用正确的表名替换
您的表):


现在
YourModel.top_orders
应该做这件事了

我在使用Ruby/Rails,更新了标签列表…它返回了哪些元素?上面的语句给了我列表中的所有记录看看这个答案,看看它是否有用:这会给我所有四条记录,按日期排序,而我只需要记录2和4。。。
EdpuOrder.where("(edpu_orders.order_id, edpu_orders.id) IN 
         (SELECT order_id, MAX(id) FROM edpu_orders GROUP BY order_id)").
order("created_at DESC")
EdpuOrder.where("(edpu_orders.order_id, edpu_orders.id) IN 
         (SELECT order_id, MAX(id) FROM edpu_orders GROUP BY order_id)").
order("created_at DESC")