如何首先按现有布尔属性排序结果

Mar*_*tin 1 activerecord ruby-on-rails

我有许多带有featured?属性的记录.

我想查询所有内容,将它们分组为特色和非特色,如果可能的话,将它们随机分组(随机显示特色组,然后随机显示).

知道如何在ActiveRecord上执行此操作吗?

Sal*_*lil 5

使用 rand()

MySQL的

SELECT * FROM <TABLE_NAME> ORDER BY featured?, rand()
Run Code Online (Sandbox Code Playgroud)

铁路3

ModelName.order("featured, rand()")
Run Code Online (Sandbox Code Playgroud)

对于Ex: -

id    featured
1      true
2      false
3      false
4      true
5      false
6      true
Run Code Online (Sandbox Code Playgroud)

我希望所有的特征值首先为真,然后为假,但是具有真假组的记录的顺序应该是随机的

所以我的代码将是

User.order("featured DESC, rand()")
Run Code Online (Sandbox Code Playgroud)

并生成o/p是(注意: - 可以更改组true/false之间的记录顺序)

id    featured
4      true
6      true
1      true
5      false
3      false
2      false
Run Code Online (Sandbox Code Playgroud)