2016-11-03 61 views
1

後,如果我有這樣的數據庫表服務器Rails的顯示最新值分組

日期,SERVER_ID,服務器名,server_status

我已經在我的控制器設置:

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

並假設我認爲我有這樣的表格:

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

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

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

如何在最近記錄的日期顯示服務器狀態?

回答

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

但假設我想在視圖中的表顯示按server_name排序的結果不會工作不是它? – Catmal

+0

@Catmal你可以通過多於一列的順序排序:'Server.order('server_name DESC,created_at DESC')' –

+0

好吧抱歉,我的意思是讓我說,我允許與ransack查看例如排序。這可能會弄亂結果嗎? – Catmal

2

如果我理解正確,那麼您每次更新服務器狀態時都會添加一個帶有時間戳和狀態的新記錄?如果這是正確的,您需要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 - 它代表的狀態,而不是服務器本身。)