我有一個在Heroku上使用PostgreSQL的Rails 4.0 APP。我試圖顯示一個表,它是我的XLog或事務日誌,以updated_at timestamp的倒序顯示最後五個條目。這在我的本地系統上正常工作。當我將它推到Heroku時,它分類錯誤。使用Heroku,Rails排序在updated_at時間戳列上不正確
我檢查了Heroku數據庫定義,並將該列正確列爲時間戳。我已將Heroku代碼克隆回到我的機器,並驗證它與我推送的相同。此時,我不知道爲什麼Heroku在本地工作時不起作用。和建議,將不勝感激。
FWIW,遠程數據庫和本地數據庫沒有相同的數據。
的代碼是:(加入log_sort的最後一行作爲一個斷點,將仍然傳遞正確的結果)
def self.last_objects object, count
logs = XLog.where(object: object).last(count)
log_sort = logs.sort_by{|log| log.updated_at}.reverse
log_sort
end
在執行過程中的斷點,可以看到變量傳遞:
這是本地的結果與正確的排序:
這是Heroku的使用不正確的排序結果:
這是的updated_at Heroku的PostgreSQL的表定義:
編輯:查看:
<% xlog = xlog_last(car.stock_number, 5) %>
...
<% xlog.each do |log| %>
<tr>
<td><%= log.associate %></td>
<td><%= log.proxy %></td>
<td><%= log.action %></td>
<td><%= log.status %></td>
<td><%= log.message %></td>
<td><%= log.value %></td>
<td><%= log.updated_at %></td>
</tr>
<% end %>
幫手:
def xlog_last(object, count)
XLog.last_objects object, count
end
編輯: 我修改sort_by如下使用的順序方法。結果完全沒有改變。發生同樣的錯誤排序和完全相同的數據顯示在完全相同的方式:
新代碼:
def self.last_objects object, count
logs = XLog.where(object: object).order(updated_at: :desc).first(count)
end
而且你肯定顯示你已經排序的時間戳(例如沒有創建)? –
@FrederickCheung是的。添加視圖。 –
xlog設置爲什麼? –