consulta, no se puede seleccionar el recuento de columnas

Tag.joins(:quote_tags).group('quote_tags.tag_id').order('count desc').select('count(tags.id) AS count, tags.id, tags.name') Build query: SELECT count(tags.id) AS count, tags.id, tags.name FROM `tags` INNER JOIN `quote_tags` ON `quote_tags`.`tag_id` = `tags`.`id` GROUP BY quote_tags.tag_id ORDER BY count desc 

Resultado:

 [#, ... , #] 

No devuelve la columna de conteo por mí. ¿Cómo puedo obtenerlo?

¿Has intentado llamar al método de count en uno de los objetos de Tag devueltos? Solo porque inspect no menciona el count no significa que no esté allí. La salida de inspect :

 [#, ... , #] 

solo incluirá las cosas que la clase Tag conoce y Tag solo sabrá sobre las columnas en la tabla de tags : solo tiene el id y el name en la tabla, así que eso es todo lo que ve.

Si haces esto:

 tags = Tag.joins(:quote_tags).group('quote_tags.tag_id').order('count desc').select('count(tags.id) AS count, tags.id, tags.name') 

y luego mira la count s:

 tags.map(&:count) 

Verá la variedad de conteos que está esperando.

Actualización: la versión original de esta respuesta caracterizó erróneamente las versiones select y posteriores y terminaron repitiendo efectivamente la versión actual de la otra respuesta de @muistooshort. Lo dejo en su estado actual porque tiene la información sobre el uso de sql en bruto. Gracias a @muistooshort por señalar mi error.

Si bien su consulta funciona de hecho como se explica en la otra respuesta, siempre puede ejecutar SQL sin formato como alternativa.

Hay una variedad de métodos select_... que puede elegir, pero creo que le gustaría usar select_all . Suponiendo que la consulta de comstackción que generaste implícitamente fuera correcta, puedes usarla, como en:

 ActiveRecord::Base.connection.select_all(' SELECT count(tags.id) AS count, tags.id, tags.name FROM `tags` INNER JOIN `quote_tags` ON `quote_tags`.`tag_id` = `tags`.`id` GROUP BY quote_tags.tag_id ORDER BY count desc') 

Consulte http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html para obtener información sobre los distintos métodos entre los que puede elegir.