Мне нужно получить предыдущие и следующие активные объекты записи с помощью Rails. Я сделал это, но не знаю, правильно ли это сделать.Rails лучший способ получить предыдущий и следующий активный объект записи
То, что я получил:
Контроллер:
@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)}
Таким образом, проблема здесь в том, что я должен пойти в свою базу данных и получить все это означает, чтобы знать, кто является предыдущим и следующим.
Пробовал использовать драгоценный камень order_query, но это не сработало для меня, и я отметил, что он отправляется в базу данных и извлекает все записи в этом порядке, поэтому я сделал то же самое, но получил только идентификаторы.
Все решения, которые я нашел, были с запросами простого заказа. Закажите по id или что-то вроде поля приоритета.
Какая БД вы используете? PostgreSQL? –
Да. PostgreSQL –