2016-12-12 2 views
0

Ein Array von Datensätzen vonExtrakt einzelne Fälle aus Array

@signatures = Signature.where('action_id IN (?)', @actions).all 

Aktionen mit einem oder mehreren Signaturen haben erzeugt wird.

Signature id: 1, action_id: 1 
Signature id: 2, action_id: 2 
Signature id: 3, action_id: 1 
Signature id: 4, action_id: 3 
Signature id: 5, action_id: 2 

Welcher Ruby-Befehl kann nur die einzelnen Fälle basierend auf action_id extrahieren? Signature.id = 4 im obigen Beispiel

+0

Bitte wiederholen Sie die Frage, es ist unmöglich zu verstehen, was Sie erreichen möchten. Verwenden Sie 'Signature.find (4)', wenn Sie eine 'Signature' mit 'id = 4' benötigen. – mudasobwa

Antwort

2
@signatures = Signature.where(action_id: @actions) 
         .group('action_id') 
         .select('id, count(action_id)') 
         .having('count(action_id) = 1') 
+1

'PG :: GroupingError: FEHLER: Spalte" signaturen.id "muss in der GROUP BY-Klausel erscheinen oder in einer Aggregatfunktion verwendet werden. Hatte nicht erwähnt, dass postgresql die Datenbank war. Dies könnte den syntaktischen Ansatz beeinflussen ... – Jerome

+0

Bitte sehen Sie ein Update; Leider habe ich kein PG zur Hand, aber das sollte funktionieren. – mudasobwa