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

War es hilfreich?

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)

Mehr

Ich glaube, Sie werden in der Lage sein, diese mit find_by_sql und GROUP BY zu tun:

Games.find_by_sql("SELECT * FROM games GROUP BY user_id")
scroll top