Rails在分组后显示最新值

如果我有这个数据库表服务器

date,server_id,server_name,server_status

我已经在我的控制器中设置:

@servers = Server.all.group(:server_id) 

在我看来,我有一个像这样的表:

    

如何在最近记录的日期显示服务器状态?

 @servers = Server.order(created_at: :desc).group(:server_id) 

如果我理解正确,那么每次更新服务器状态时,您都会添加一个带有时间戳和状态的新记录? 如果这是正确的,您将需要GROUP BY server_idORDER BY date DESC

这可以用SQL表示

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

或者在Rails的ActiveRecord中

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

(作为旁注,我建议将此模型称为ServerStatus而不仅仅是Server – 它代表状态,而不是服务器本身。)