sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres ORDER BY-värden i IN-listan med Rails Active Record

Ditt länkade svar ger exakt vad du behöver, du behöver bara koda det i Ruby på ett flexibelt sätt.

Något så här:

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

Du kan faktiskt enkelt lägga det i en modul och blanda in det i alla ActiveRecord-klasser som behöver det, eftersom det använder table_name och self den är inte implementerad med några specifika klassnamn.



  1. MYSQL CONCAT MAX LÄNGD

  2. Välj endast unika värden från en kolumn i codeigniter

  3. DBMS_PARALLEL_EXECUTE och indirekt givna anslag på förfarande

  4. Laravel 5.4 Raw Gå med i fråga