Rails:如何在最后之前找到记录?

Ole*_*sko 23 ruby-on-rails ruby-on-rails-3

我可以在下面的例子中找到我的表中的最后一条记录,但是如果我想在最后一个之前找到记录,例如(last-1)或(last-2)..?我在每个循环中都有这个例子:

Table.find(:last, :conditions => {:dogovor_id => p.id}).id
Run Code Online (Sandbox Code Playgroud)

fl0*_*00r 27

Table.where(:dogovor_id => p.id).order("id DESC").first           # last
Table.where(:dogovor_id => p.id).order("id DESC").offset(1).first # last - 1
Table.where(:dogovor_id => p.id).order("id DESC").offset(2).first # last - 2
Run Code Online (Sandbox Code Playgroud)


小智 21

另一种更容易记住的方法是: Model.last(2).first


use*_*917 14

您可以使用负指数.

倒数第二个元素的索引为-2:

Model.last(2).first
Run Code Online (Sandbox Code Playgroud)

第10到最后:

Model.second_to_last
Model.third_to_last
Run Code Online (Sandbox Code Playgroud)

Rails 5中,倒数第二个形成second_to_lastsecond_to_last 具有别名.所以,如果你想,请使用:

Model.all[-2]
Run Code Online (Sandbox Code Playgroud)