I have an app that returns a bunch of records in a list in a random order with some pagination. For this, I save a seed value (so that refreshing the page will return the list in the same order again) and then use .order('random()')
.
However, say that out of 100 records, I have 10 records that have a preferred_level = 1
while all the other 90 records have preferred_level = 0
.
Is there some way that I can place the preferred_level = 1
records first but still keep everything randomized?
For example, I have [A,1],[X,0],[Y,0],[Z,0],[B,1],[C,1],[W,0]
and I hope I would get back something like [B,1],[A,1],[C,1],[Z,0],[X,0],[Y,0],[W,0]
.
Note that even the ones with preferred_level = 1
are randomized within themselves, just that they come before all the 0
records. In theory, I would hope whatever solution would place preferred_level = 2
before the 1
records if I were ever to add them.
------------
I had hoped it would be as intuitively simple as Model.all.order('random()').order('preferred_level DESC')
but that doesn't seem to be the case. The second order doesn't seem to affect anything.
Any help would be appreciated!
Aucun commentaire:
Enregistrer un commentaire