繁体   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