按显示文字排序的列

时间:2018-10-12 17:56:19

标签: ruby-on-rails ruby database

因此,我对Rails并不陌生,并且继承了一个大型的活动Rails项目进行开发。我正在处理的当前错误相当复杂,有点复杂,但是基本上,我列出了可以申请各种程序的用户。在整个应用程序过程中,用户的应用程序状态会更改为数据库中的许多不同内容(例如“已应用”,“待处理”,“已批准”,“已拒绝”等)。对于其他功能,保持这种方式很重要。现在,有一个页面列出了所有用户及其应用程序状态,但是管理员只希望显示一个布尔值(即,如果它不是批准的值,则显示为“未批准”),我已经正常工作了;但是,如果他们对列进行排序,则它是按数据库值而不是显示的值排序,因此显示为损坏。 例如:

未批准(已批准)已批准(已批准)未批准(已拒绝)未批准(正在审核)

有没有办法:

A)权衡各种状态,以便所有“否”一起出现,或者 B)按显示的值而不是数据库的值排序

我玩过构建纯JavaScript的解决方案,但是此列表上有分页,而javascript只对可见页面进行排序。

1 个答案:

答案 0 :(得分:0)

您可以在Ruby级别或数据库级别执行此操作。

如果您对性能很感兴趣,那么我认为数据库级别将是解决方案。

Ruby LEVEL。

@users = User.all.sort_by { |u| u.status == 'approved' }

数据库级别。

User.all.order("(case when status = 'approved' then 0 else 1)")