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

Inkorporerer Custom SELECT-klausul i ActiveRecord-forespørgsel

Nå, det var simpelt. Brug af .first var problemet. Jeg formoder, at dette skyldes, at der ikke er nogen modelposter, der returneres af forespørgslen. Hvis jeg adresserer resultatets 0-indeks direkte, får jeg alle mine point.

så denne kode virker:

 query = 
      Assessment.rating_attributes.collect{|attribute|
        1.upto(5).collect do |i|
        %Q{sum(CASE WHEN #{attribute.to_s} = #{i} then 1 else 0 end) as #{attribute}_score_#{i}}
      end
    }.join(', ')

Assessment.where(selection_attribute: 1038).select(query)[0]
=> #<Assessment id: nil>

Assessment.where(selection_attribute: 1038).select(query)[0].first_attribute_score_1
=> 3



  1. Goroutiner blokerede forbindelsespool

  2. Cloud Backup-indstillinger til MySQL- og MariaDB-databaser

  3. JPA Hibernate - kaskade sletning i både database og annotering

  4. Laravel-forespørgselsbygger - Sådan grupperer du enten efter alias eller laver rå groupBy