Rails在分组后显示最新值

时间:2016-11-03 12:19:26

标签: mysql ruby-on-rails

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

date,server_id,server_name,server_status

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

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

假设在我看来我有一张表:

<% @servers.each do |server| %>

<td><%= server.server_name %></td>

<td><%= server.server_status %></td>

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

2 个答案:

答案 0 :(得分:2)

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

可以在SQL中表示为

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

或在Rails&#39; ActiveRecord为

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

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

答案 1 :(得分:1)

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