Rieles la mejor manera de obtener el objeto de registro activo anterior y siguiente

Necesito obtener los objetos de registro activos anteriores y siguientes con Rails. Lo hice, pero no sé si es la forma correcta de hacerlo.

Lo que tengo

Controlador:

@product = Product.friendly.find(params[:id])

order_list = Product.select(:id).all.map(&:id)

current_position = order_list.index(@product.id)

@previous_product = @collection.products.find(order_list[current_position - 1]) if order_list[current_position - 1]
@next_product = @collection.products.find(order_list[current_position + 1]) if order_list[current_position + 1]

@previous_product ||= Product.last
@next_product ||= Product.first

product_model.rb

default_scope -> {order(:product_sub_group_id => :asc, :id => :asc)}

Entonces, el problema aquí es que necesito ir a mi base de datos y obtener todos estos identificadores para saber quién es el anterior y el siguiente.

Intenté usar la gemaorder_query, pero no funcionó para mí y noté que va a la base de datos y busca todos los registros en ese orden, por eso hice lo mismo pero obtuve solo los identificadores.

Todas las soluciones que encontré fueron con consultas de pedidos simples. Ordenar por id o algo así como un campo de prioridad.

Respuestas a la pregunta(4)

Su respuesta a la pregunta