2017-08-04 3 views
1

Ich erstelle eine Rails 5 App. In dieser App bekam ich Kandidatenmodelle. Jeder Kandidat hat ein Statusattribut. Ich möchte eine JSON (Jbuilder) -Ausgabe erstellen, die wie folgt aussieht. Bedeutung Ich möchte die Ausgabe auf Statusattribut jedes Kandidaten gruppieren.So gruppieren Sie Status und Ausgabe in JSON

[{ 
     "total_entries": 1 
    }, 
    { 
     "entries": [{ 
      "pending": [{ 
       "id": 4, 
       "name": "James Britain" 
      }], 
      "completed": [{ 
       "id": 4, 
       "name": "James Britain" 
      }, { 
       "id": 4, 
       "name": "Anna Tompson" 
      }] 
     }] 
    } 
] 

Ich versuchte Folgendes, aber das hat nicht funktioniert.

Candidate.select('status, firstname').group('status, firstname') 

Bitte helfen!

Antwort

0

Sie müssen group_by verwenden und die Syntax ist etwas anders basierend auf Ihrer DB und Version von Schienen. Die Bereitstellung dieser würde helfen, die Antwort zu nageln, aber das ist der breiteste Anwendungsfall:

Candidate.select('status, firstname').group_by(&:status) 
+0

Funktioniert gut! ABER ein Problem. Es gibt ein Array aus und mein Jbuilder (ich habe mich geirrt, ich benutze nicht Rabl) Code kann damit nicht umgehen. Ich bekomme undefinierte Methode 'id 'für # . –

+0

müssten Sie die ID zur Select-Anweisung hinzufügen? wie vielleicht 'Candidate.select ('id, status, vorname'). group_by (&: status)' gefällt das? –

Verwandte Themen