[英]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_at
或date_occurring
列名会更细致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.