Mysql
 sql >> Base de données >  >> RDS >> Mysql

Les rails affichent la dernière valeur après le regroupement

Si je comprends bien, vous ajoutez un nouvel enregistrement avec un horodatage et un statut chaque fois que vous mettez à jour le statut d'un serveur ? Si c'est correct, vous devrez GROUP BY server_id et ORDER BY date DESC .

Cela peut être exprimé en SQL comme

SELECT * FROM servers GROUP BY server_id ORDER BY date DESC;

ou dans l'ActiveRecord de Rails sous

Server.all.group(:server_id).order(:created_at => :desc)

(En remarque, je recommanderais d'appeler ce modèle quelque chose comme ServerStatus plutôt que juste Server - il représente le statut, pas le serveur lui-même.)