2014-02-05 12 views
0

原始问题: 假设我的数据库中有10个用户,并且我想根据排序的created_at日期获得第6个(或第3个或第8个)任何用户。我怎样才能做到这一点?基于created_at日期获取第n位用​​户

编辑问题: 假设我有10个用户在我的数据库中,并且我有一个特定的用户,如果我将它们排序在created_at日期,我如何确定第个用户呢? (因此,用户X是基于created_at的所有用户的第n位用户)

对不起,我感到困惑!

回答

1

这应该工作:(显然必须改变偏移值根据需要)

User.order(:created_at).limit(1).offset(6) 

好,编辑的问题,使这是一个有点复杂。不确定ActiveRecord是否适合在这里使用。有些数据库拥有一种虚拟“流行号”,您可以使用它。但让我们假设我们没有那个。 SQL本身不能这样做,所以你只能计算比你所寻找的'更少'的记录数。

假设我们已找到相关用户为user

然后,我们可以这样做:

User.where("created_at < :created_at", created_at: user.created_at).count 

至少尽我可以想出。

+0

谢谢,这工作,但我知道我制定了我的问题错了,对不起! – John

+0

非常聪明,我喜欢这个,谢谢! – John

0
User.order("created_at DESC").limit(1).offset(6) 
    or 
User.order("created_at DESC").limit(1).offset(6) 

这就像工作:

select * from users order by created_at DESC LIMIT 5 OFFSET 30;