簡體   English   中英

Rails活動記錄訂單問題

[英]Rails Active Record Order Issue

我有一個名為Event的模型類,以及一個字段'when'。 我正在嘗試在desc時返回事件順序,所以這是代碼。

@events = Event.order("'when' DESC") 

我正在使用MySQL作為數據庫。 返回的結果未排序

我查看了控制台,並將生成的sql文件歸檔,這似乎沒問題

SELECT `events`.* FROM `events` ORDER BY 'when' DESC

我也在控制台中運行這個sql,它返回了排序結果。 “什么時候”有什么特別之處嗎?

如果我將查詢更改為Event.order("events.when DESC") ,則返回排序結果

它應該是反引號,而不是單引號。

@events = Event.order("`when` DESC") 

當你使用single quote when它不再是一個列而只是一個字符串值。 轉義 tableName和columnName時,你應該使用反引號而不是單行符。

您可以刪除要添加到字段中的單引號。 它應該適用於整個事物的引用,例如:

@events = Event.order("column_name DESC") 

對於column_names,這通常是正確的,除非在when是保留字的情況下。 所以你需要反擊它:

 @events = Event.order("`when` DESC")

但是,我仍然建議您更改列名,最后使用保留字會遇到並發症。 在我看來,什么when也不是很具描述性,是:當事件被創建/訂購時? 活動何時開始? 什么時候會結束? 也許occurring_atdate_occurring列名會更細致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM