Rails:查询除第一条记录外的所有内容?

时间:2012-03-08 20:02:47

标签: ruby-on-rails ruby-on-rails-3 activerecord

如何使用ActiveRecord查询除第一条记录以外的所有

像...一样的东西。

Item.where(:widget_id => 123).all_but_first

我正在运行Rails 3.2。

5 个答案:

答案 0 :(得分:12)

我这样做:

Item.where(:widget_id => 123).all[1..-1]

答案 1 :(得分:4)

或者你可以使用非常高限制的偏移和限制。

Item.where(:widget_id => 123).limit(18446744073709551610).offset(1)

请参阅Mysql Offset Infinite rows进行讨论。

答案 2 :(得分:1)

派对有点迟,但如果这对某人有用:

  • 如果你想要一个阵列,我认为offset是你最好的选择,而且最具可读性。

  • 如果您想要恢复关系,可以执行以下操作:STORE_FAST

假设您不关心订单。如果你这样做,你当然应该加上它。

答案 3 :(得分:0)

使用范围现在可以完全回答

Use Storyboard ID

但我会建议确保你知道你的意思除了第一个以外的所有内容。你的意思是第一个创建,最新,最低的ID?当您知道这一点时,您可以将排序添加到范围中,例如

class Item < ApplicationRecord
    scope all_but_first -> { all[1..-1] }
end

答案 4 :(得分:-1)

添加到Veraticus的答案,您还可以包括您想要订购商品的方式:

Item.where(:widget_id => 123).all[1..-1].order('created_at DESC')

快乐编码:)