复杂导轨订购

时间:2013-02-26 00:50:06

标签: ruby-on-rails ruby-on-rails-3

我正在尝试从以下(简化)表中获取有序的结果列表:

create_table "evaluations", :force => true do |t|
  t.datetime "completed_at"
  t.datetime "created_at",          :null => false
end

如果completed_at已设置(非空),我想按completed_at(DESC)排序。如果completed_at为空,我希望按created_at(DESC)排序。

有没有办法通过模型使用Rails 3做到这一点?

我在我的本地机器上使用sqlite但在服务器上使用pg(我很快就会切换到pg。)

1 个答案:

答案 0 :(得分:0)

我找到了自己问题的答案,但我不确定它是最优雅的Rails 3。如果有更好的方法,请高兴!

Evaluations.order("CASE WHEN completed_at IS NULL OR THEN created_at ELSE completed_at END DESC")