Rails: Comment trouver () tous les enregistrements uniques dans certains champs?

J'ai une liste de "demande" des objets, dont chacun a assez normal activerecord qualités. Les demandes de table est liée à la table de jeux avec une table de jointure, 'games_requests," de sorte qu'une demande a une demande.jeux tableau.

La question est, est-il un moyen de faire une recherche sur les n dernières demandes uniques, où l'unicité est défini par les jeux de la colonne et quelques autres, mais ignore les autres colonnes (comme le nom de la demande de l'utilisateur?)

J'ai vu une syntaxe du type 'find (:all, :limite=>5, :include=>[:jeux,:])' mais c'était le retour des doublons.

Merci...

EDIT: Merci pour le chaos pour une grande réponse. Tu m'as vraiment proche, mais j'ai encore besoin de retours pour être valide, la demande d'objets: les 5 premiers enregistrements qui sont distincts dans les lignes demandées. Je pouvais trouver comme vous l'avez construit, et puis de le faire une seconde pour trouver la première ligne du tableau qui correspond à chacun des ensembles renvoyé par la première de trouver.

EDIT:

Games.find(
    :all, :limit => 5,
    :include => [:games, :requests],
    :group => 'games, whatever, whatever_else'
)

...donne une erreur SQL:

Mysql::Error: Unknown column 'games' in 'group statement': SELECT * FROM `games`  GROUP BY games

J'ai fait quelques changements pour ce que j'ai supposé être correct pour mon projet; arriver à une liste de demandes à la place de jeux, 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'
)

Je pense que je vais avoir à utiliser le :join=> option ici.

source d'informationauteur Sniggerfardimungus

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *