Ho bisogno di ottenere gli oggetti record attivi precedenti e successivi con Rails. L'ho fatto, ma non so se è il modo giusto per farlo.Rails il modo migliore per ottenere l'oggetto record attivo precedente e successivo
quello che ha:
Controller:
@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)}
Quindi, il problema qui è che ho bisogno di andare al mio database e ottenere tutti questo id per sapere chi è il precedente e il prossimo.
Provato a usare la gemma order_query, ma non ha funzionato per me e ho notato che va al database e recupera tutti i record in quell'ordine, quindi, è per questo che ho fatto lo stesso ma ottenendo solo gli id.
Tutte le soluzioni che ho trovato erano semplici querys. Ordina per id o qualcosa come un campo prioritario.
Quale DB stai utilizzando? PostgreSQL? –
Sì. PostgreSQL –