Rails按特定顺序按多个值激活查询顺序?

时间:2013-10-04 04:05:04

标签: sql ruby-on-rails sql-order-by

我有一张桌子

Roles(id int,,name vachar(50),role enum(CAD,CA,CM,CV ))

我希望选择按特定顺序按特定值排序的数据。 我的活动模型查询:role.order('role asc')然后是结果:

1 name1 CAD
2 name2 CA
3 name2 CM

但我希望结果如下:

1 name1 CAD
2 name2 CM
3 name2 CA

任何人都可以帮助我吗? 提前致谢

1 个答案:

答案 0 :(得分:2)

便携式解决方案是在您的ORDER BY中使用CASE语句作为内联映射:

query.order(%q{
    case role
    when 'CAD' then 1
    when 'CM'  then 2
    when 'CA'  then 3
    end
})

请记住,您可以对所需的任何表达式进行ORDER BY,CASE肯定是SQL中的表达式。