我有这个:
source = MyModel.all.some_filter(some_condition).order("condition123 ASC") # 1
res1 = source.page(params[:page]).per(PAGE_SIZE) # 2
我还希望从source
中检索另外2项"环绕" res1
- 其邻居:
neighbour1 =
if params[:page] > 1
source.page(params[:page] - 1).per(1).order("condition123 DESC")
else
nil
end
neighbour2 =
unless last_page(source)
source.page(params[:page] + 1).per(1)
else
nil
end
并将所有结果合并在一起:
full_result = neighbour1 + res1 + neighbour2
首先,有没有办法让它更有效?
如果neighbour1
或neighbour2
为零,如何合并结果?如果这样做:
if params[:page] > 1
source += source.page(params[:page] - 1).per(1).order("condition123 DESC")
end
然后源将转换为数组,我再也无法使用页面了。我知道我可以通过Kaminary.page
执行此操作,但我更倾向于让源不要将自身转换为数组并保持MyModel::ActiveRecord_Relation