sql >> Databáze >  >> RDS >> PostgreSQL

Hodnoty Postgres ORDER BY v seznamu IN pomocí Rails Active Record

Vaše propojená odpověď poskytuje přesně to, co potřebujete, stačí ji flexibilně zakódovat v Ruby.

Něco takového:

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

Ve skutečnosti to můžete snadno vložit do modulu a zamíchat do všech tříd ActiveRecord, které to potřebují, protože používá table_name a self není implementován žádnými konkrétními názvy tříd.



  1. Konverze formátu data Java

  2. Jak uložit výsledek dotazu do proměnné pomocí mysql

  3. Entity Framework se selháním MySql a migrací, protože maximální délka klíče je 767 bajtů

  4. customer.pk_name spojení transakcí.fk_name vs. customer.pk_id [sériové] spojení transakcí.fk_id [integer]