【发布时间】:2016-03-28 17:52:23
【问题描述】:
我有email_invitations 表,其中包含三个日期时间列sent_at、opened_at 和rsvped_at。如何按日期升序对三列进行排序(最近的在顶部)?
我在 rails 中使用default_scope:
default_scope { order('sent_at ASC' }
这就是我所拥有的
EmailInvitation
id: 1, sent_at: "2016-03-24", opened_at: "2016-03-25", rsvped_at: "2016-03-25"
id: 2, sent_at: "2016-03-24", opened_at: "2016-03-25", rsvped_at: "2016-04-01"
id: 3, sent_at: "2016-03-23", opened_at: "2016-03-24", rsvped_at: nil
id: 4, sent_at: "2016-03-29", opened_at: nil, rsvped_at: nil
使用EmailInvitation.order(sent_at: :asc, opened_at: :asc, rspved_at: :asc) 看起来它首先排序sent_at,然后是opens_at,然后是rsvped_at。
id: 4, sent_at: "2016-03-29", opened_at: nil, rsvped_at: nil
id: 1, sent_at: "2016-03-24", opened_at: "2016-03-25", rsvped_at: "2016-03-25"
id: 2, sent_at: "2016-03-24", opened_at: "2016-03-25", rsvped_at: "2016-04-01"
id: 3, sent_at: "2016-03-23", opened_at: "2016-03-24", rsvped_at: nil
但我真正想要的是最近日期的内容会在顶部,所以我需要以某种方式加入所有列,这样它就不会查看列名,而只是查看日期。
id: 2, sent_at: "2016-03-24", opened_at: "2016-03-25", rsvped_at: "2016-04-01"
id: 4, sent_at: "2016-03-29", opened_at: nil, rsvped_at: nil
id: 1, sent_at: "2016-03-24", opened_at: "2016-03-25", rsvped_at: "2016-03-25"
id: 3, sent_at: "2016-03-23", opened_at: "2016-03-24", rsvped_at: nil
【问题讨论】:
-
既然您对 Athonys 的回答不满意:您能展示一些示例数据和预期结果吗?
-
编辑:需要升序,而不是降序
标签: sql ruby-on-rails ruby rails-activerecord