我有一个名为Event的模型类,以及一个名为'when'的字段。我正在尝试按desc返回事件顺序,所以这是代码。
@events = Event.order("'when' DESC")
我正在使用MySQL作为数据库。但返回的结果未排序。
我查看了控制台,并提交了生成的sql文件,这似乎没问题
SELECT `events`.* FROM `events` ORDER BY 'when' DESC
我也在控制台中运行这个sql,它返回了排序结果。 “什么时候”有什么特别之处吗?
如果我将查询更改为Event.order("events.when DESC")
,则会返回排序结果
答案 0 :(得分:3)
它应该是反引号,而不是单引号。
@events = Event.order("`when` DESC")
当您在single quote
周围使用when
时,它不再是列,而只是一个字符串值。当转义 tableName和columnName时,你应该使用反引号而不是单行。
答案 1 :(得分:1)
您可以删除要添加到字段中的单引号。它应该与整个事物的引用一起使用,例如:
@events = Event.order("column_name DESC")
对于column_names,这是正确的,除了when
是保留字的情况。所以你需要反击它:
@events = Event.order("`when` DESC")
但是,我仍然建议您更改列名,最终会使用保留字来解决问题。 when
在我看来也不是很具描述性,是吗:当事件被创建/订购时?活动何时开始?什么时候会结束?也许occurring_at
或date_occurring
列名称会更加详细。