Wie finde ich () alle Datensätze einzigartig in bestimmten Bereichen?
-
19-08-2019 - |
Frage
Ich habe eine Liste von ‚Antrag‘ Objekte, von denen jeder ziemlich normal Active Qualitäten. Die Anfragen Tisch ist mit einer Join-Tabelle mit dem Spieltisch im Zusammenhang, ‚games_requests,‘ so dass eine Anforderung hat eine request.games Array.
Die Frage ist, gibt es eine Möglichkeit, eine Entdeckung für die letzten n einmalige Anfragen zu tun, wo Einzigartigkeit durch die Spiele-Säule und ein paar anderen definiert ist, ignoriert aber gezielt andere colums (wie der Name des anfordernden Benutzers?)
sah ich eine Syntax wie 'finden (: alle,: Limit => 5,: include => [: Spiele,: stage]).', Aber das war die Rückkehr Duplikate
Danke ...
EDIT: Dank Chaos für eine große Resonanz. Du hast wirklich nahe mich, aber ich muß noch die Erträge gültige Anforderung Objekte zu sein: die ersten 5 Datensätze, die in den gewünschten Reihen verschieden sind. Ich konnte nur den Fund verwenden, wie Sie es gebaut und dann in der Tabelle einen zweiten Fund für die erste Reihe zu tun, die von dem ersten Fund zurück jeden der Sätze übereinstimmt.
EDIT:
Games.find(
:all, :limit => 5,
:include => [:games, :requests],
:group => 'games, whatever, whatever_else'
)
... gibt einen SQL-Fehler:
Mysql::Error: Unknown column 'games' in 'group statement': SELECT * FROM `games` GROUP BY games
Ich habe ein paar Änderungen für das, was ich davon ausgegangen, für mein Projekt richtig sein; eine Liste der Anfragen statt Spielen bekommen, etc:
Request.find(
:all, :order=>"id DESC", :limit=>5,
:include=>[:games], #including requests here generates an sql error
:group=>'games, etc' #mysql error: games isn't an attribute of requests
:conditions=>'etc'
)
Ich denke, ich werde zu verwenden haben, um die. Schließen => Option hier
Lösung
Games.find(
:all, :limit => 5,
:include => [:games, :requests],
:group => 'games, whatever, whatever_else'
)
Andere Tipps
Versuchen Rails uniq_by.It auch mit Verein und kehrt Array funktioniert.
@document = Model.uniq_by(&:field)