使用虚拟列进行Ruby排序

时间:2013-09-19 12:24:34

标签: sql ruby transient

我的事件表中的一列包含一个列,其值为“Hold”,“Important”,“Pending”等。我想将查询结果返回给客户端并按此列排序,但我不想按字母顺序排序。 “重要”事件应该是第一个,“待定”第二个,等等。更重要的是,我想将整数排序值返回给客户端。

@work = Transaction.
     joins( :events ).
     where( store_id: params[:work_id] ).
     where( status: 'Open' )

1 个答案:

答案 0 :(得分:1)

你可以这样做:

@work = Transaction.
     joins(:events).
     where(store_id: params[:work_id]).
     where(status: 'Open').
     select("(case when your_column = 'Important' then '1' 
                   when your_column = 'Pending' then 2 
                   when your_column = 'Hold' then 3 else 4 end) as your_integer_column").
     order("your_integer_column")