0

我正在将 postgresql 用于 Rails 应用程序上的数据库,该应用程序跟踪某些事件的发生时间。事件发生时的数据库列被称为when(坏名,我知道)。我可以做这个

@events = @group.events.order('created_at DESC')

但是,当我这样做时

 @events = @group.events.order('when DESC')

我收到这个错误

PG::SyntaxError: ERROR:  syntax error at or near "when"
LINE 1: ..."events"  WHERE "events"."group_id" = $1  ORDER BY when DESC
                                                              ^
: SELECT "events".* FROM "events"  WHERE "events"."group_id" = $1  ORDER BY when DESC

记录在when数据库中具有这种格式

when: "2013-08-07"

根据我告诉你的,你能看出我不能这样做的原因吗

@events = @group.events.order('when DESC')

对我来说,能够在举办活动之前对活动进行排序是很重要的。由于按 created_at 排序有效,我不明白为什么当我替换不同的列时会出现语法错误。

4

1 回答 1

3
  • WHEN 是 SQL 中的保留字(想想 Switch 案例CASE <smth> WHEN ...:)

  • 您可以尝试像这样访问它:

    Event.order('events.when DESC')
    
  • 您应该将您的专栏名称更改为不同于when(查看@PhilipHallstrom 评论)

于 2013-08-05T16:55:36.273 回答