Rails组并显示最旧和最新值

时间:2016-11-03 14:23:47

标签: mysql ruby-on-rails

此问题与我先前询问的this question有关。

数据库表服务器

  

date,server_id,server_name,server_status

在我的控制器中使用它:

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

我可以在我的视图中显示最新的服务器状态:

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

如何在同一张桌子上显示第一个状态?基本上按照相反的方式按日期排序。

我知道在这种情况下它并没有真正意义,但我在第一个问题中使用了这个例子来使它更清晰。

提前致谢

2 个答案:

答案 0 :(得分:0)

我认为这应该做你要求的事情

#controller
servers_acending = Server.order(date: :asc).group_by {|i| i.server_id}
@first_last_pairs = servers_acending.map {|k, v| [v.first, v.last]}

#your view 
<%@first_last_pairs.each do |pair|%>
  <td><%= pair.first.server_name %></td>
  <td><%= pair.first.server_status %></td>
  <td><%= pair.last.server_name %></td>
  <td><%= pair.last.server_status %></td>
<%end%>

这是你可以在表格中显示第一个

答案 1 :(得分:0)

这也适合你:

@servers_latest = Server.all.group(:server_id).order(:date => :desc)
@servers_oldest = Server.all.group(:server_id).order(:date => :asc)