Tengo una lista de objetos 'de solicitud', cada uno de los cuales tiene cualidades activerecord bastante normales. La tabla de solicitudes está relacionada con la tabla de juegos con una tabla de combinación, 'games_requests', por lo que una solicitud tiene una matriz request.games.Rieles: ¿Cómo encuentro() todos los registros únicos en ciertos campos?
La pregunta es, ¿hay alguna manera de hacer un hallazgo para las últimas n solicitudes únicas, donde la singularidad está definida por la columna de juegos y un par de otras, pero específicamente ignora otras columnas (como el nombre del usuario solicitante?)
Vi una sintaxis como 'find (: all,: limit => 5,: include => [: games,: stage])' pero eso era devolver duplicados.
Gracias ...
EDIT: Gracias al caos de una gran respuesta. Me has acercado mucho, pero aún necesito que los devoluciones sean objetos de solicitud válidos: los primeros 5 registros que son distintos en las filas solicitadas. Podría usar el hallazgo como lo construiste y luego hacer un segundo hallazgo para la primera fila de la tabla que coincida con cada uno de los conjuntos devueltos por el primer hallazgo.
EDIT:
Games.find(
:all, :limit => 5,
:include => [:games, :requests],
:group => 'games, whatever, whatever_else'
)
... da un error SQL:
Mysql::Error: Unknown column 'games' in 'group statement': SELECT * FROM `games` GROUP BY games
hice algunos cambios para lo que supuse que es correcta para mi proyecto; obtener una lista de solicitudes en vez de juegos, 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'
)
Estoy pensando que voy a tener que utilizar: unirse => opción aquí.
Esto devuelve los juegos, lo que, whatever_else y columnas. ¿Hay alguna manera de devolver los objetos de solicitud completos, expulsando solo aquellos que fallan la exclusividad en estas columnas? – Sniggerfardimungus
Sí. Editado por – chaos
Hrm. Tiene un problema con 'juegos' como un atributo virtual a través de una tabla de unión. (Consulte la pregunta editada) – Sniggerfardimungus