Rails使用最新更新获取行

时间:2013-04-12 21:23:36

标签: ruby-on-rails ruby activerecord

我有这样的数据库表结构:

id | currency_list_id | direction_id |价值|的updated_at

我有这样的数据:

1 | 1 | 1 | 8150 | 09-08-2010 01:00:00
1 | 1 | 2 | 8250 | 09-08-2010 01:00:00
1 | 2 | 1 | 8150 | 06-08-2010 01:00:00
1 | 2 | 2 | 8150 | 06-08-2010 01:00:00
1 | 1 | 1 | 8150 | 09-08-2010 15:00:00
1 | 1 | 2 | 8250 | 09-08-2010 15:00:00

因此交换机中的货币几乎每天都被设置,并且可以在一天内设置多次......但也可以在几天前设置一个......而且我必须获取所有实际数据.. < / p>

如何在rails(ruby)中我只能获取最后的实际数据?

在我的示例中,结果将是:

1 | 2 | 1 | 8150 | 06-08-2010 01:00:00
1 | 2 | 2 | 8150 | 06-08-2010 01:00:00
1 | 1 | 1 | 8150 | 09-08-2010 15:00:00
1 | 1 | 2 | 8250 | 09-08-2010 15:00:00

怎么做?

我试试:

@currencies = CurrencyValue.find(:all, :conditions => {:currency_list_id => id}, :order => :updated_at)

但是接下来我将获取一些currency_list_id的所有数据,但是如何获取最后2个值?如何获取最后2个有序行?

2 个答案:

答案 0 :(得分:1)

@currencies = CurrencyValue.find(:all, :conditions => {:currency_list_id => id, :order => :updated_at}).last(2)

我认为:)。现在无法检查。

答案 1 :(得分:0)

我认为你需要的是GROUP_BY。还有一个问题在这里解释:

How to get the latest record in each group using GROUP BY?