Как бы я запросил все за исключением первой записи с использованием ActiveRecord?Рельсы: Запрос за исключением первой записи?
Что-то вроде ...
Item.where(:widget_id => 123).all_but_first
Я бегу Rails 3.2.
Как бы я запросил все за исключением первой записи с использованием ActiveRecord?Рельсы: Запрос за исключением первой записи?
Что-то вроде ...
Item.where(:widget_id => 123).all_but_first
Я бегу Rails 3.2.
Я хотел бы сделать это следующим образом:
Item.where(:widget_id => 123).all[1..-1]
В качестве альтернативы можно использовать смещение и предел с очень высоким пределом.
Item.where(:widget_id => 123).limit(18446744073709551610).offset(1)
см. Mysql Offset Infinite rows для обсуждения этого вопроса.
С прицелами это сейчас можно ответить точно
class Item < ApplicationRecord
scope all_but_first -> { all[1..-1] }
end
Но я бы советовал делать, что вы знаете, что вы имеете в виду под "все, кроме первого. Вы имеете в виду первый созданный, самый последний, самый низкий id? Когда вы это знаете, вы можете добавить заказ в область действия, например.
scope :all_but_first, -> { order(created_at: :desc)[1..-1] }
без создания '' 'all_but_first''' метод (который, вероятно, просто этот точный код) Я думаю, что это самый простой и очевидный способ справиться с этим. –
Обратите внимание, что это вернет вам 'Array', а не' ActiveRecord_Relation' – davideghz