有什么方法可以在使用范围时偏离特定记录

时间:2017-04-27 08:50:22

标签: sql ruby-on-rails activerecord offset

我有很多方法可以在特定的活动记录后查找记录。例子是:

removeFromObject

我想知道是否有任何方法来模块化这样:

def photo_recent
    offsetphoto = Photo.find(params[:id])
    @photos = Photo.recent.where('created_at> ?', offsetphoto.id).limit(10)#recent is a scope using created_at
end

def photo_recent
    offsetphoto = Photo.find(params[:id])
    @photos = Photo.popular.where('like_count > ?', offsetphoto.like_count).limit(10)#popular is a scope using like_count
end

2 个答案:

答案 0 :(得分:1)

您可以编写一个范围,只接受当前Photo

中的所有内容
scope :offset_from, -> (photo) { where('id >= ?', photo.id) }

Photo.offset_from(Photo.find(params[:id]))......

答案 1 :(得分:1)

# models/photo.rb
scope :most_recent_starting_from, -> (photo) { order(created_at: :asc).where('created_at >= ?', photo.created_at) }

使用示例

photo = Photo.find(123)
ten_next_created_photos_after_photo = Photo.most_recent_starting_from(photo).limit(10)