sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres ORDER BY-værdier i IN-listen ved hjælp af Rails Active Record

Dit linkede til svar giver præcis det, du har brug for, du skal bare kode det i Ruby på en fleksibel måde.

Noget som dette:

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

Faktisk kan du nemt sætte det i et modul og blande det i alle ActiveRecord-klasser, der har brug for det, da det bruger table_name og self den er ikke implementeret med nogle specifikke klassenavne.



  1. Er der en Entity Framework 7 Database-First POCO Generator?

  2. Sådan sammenkædes strenge i PostgreSQL

  3. Sådan gør du MySQL-strenge til SQL Server-ækvivalenter

  4. SQL Server - kopier lagrede procedurer fra en db til en anden