PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres ORDER BY wartości na liście IN przy użyciu Rails Active Record

Twoja odpowiedź połączona z linkiem zapewnia dokładnie to, czego potrzebujesz, wystarczy, że zakodujesz to w Ruby w elastyczny sposób.

Coś takiego:

class User
  def self.find_as_sorted(ids)
    values = []
    ids.each_with_index do |id, index|
      values << "(#{id}, #{index + 1})"
    end
    relation = self.joins("JOIN (VALUES #{values.join(",")}) as x (id, ordering) ON #{table_name}.id = x.id")
    relation = relation.order('x.ordering')
    relation
  end
end

W rzeczywistości możesz łatwo umieścić to w module i wmieszać do dowolnych klas ActiveRecord, które tego potrzebują, ponieważ używa on table_name i self nie jest zaimplementowany z żadnymi nazwami klas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. przechowywanie więcej niż 255 znaków w bazie danych PostgreSQL na heroku

  2. Jak uporządkować dane w sqlalchemy według listy

  3. Jak utworzyć tabelę tylko wtedy, gdy nie istnieje w PostgreSQL

  4. Wstaw NULL do bazy danych PostgreSQL przez PHP, gdy pole daty jest puste

  5. PostgreSQL - Konwertuj ciąg na liczbę całkowitą ASCII