sql >> Database >  >> RDS >> PostgreSQL

Postgres ORDER BY-waarden in IN-lijst met Rails Active Record

Uw gekoppelde antwoord biedt precies wat u nodig heeft, u hoeft het alleen op een flexibele manier in Ruby te coderen.

Zoiets als dit:

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

In feite zou je dat gemakkelijk in een module kunnen plaatsen en het in alle ActiveRecord-klassen kunnen mengen die het nodig hebben, aangezien het table_name gebruikt en self het is niet geïmplementeerd met specifieke klassenamen.



  1. Wat betekent regclass in Postgresql

  2. SQLSTATE[42000] Syntaxisfout of toegangsfout Rijgrootte te groot

  3. Vreemd castinggedrag in mysql

  4. Een aparte combinatie van 2 kolommen selecteren in mysql