2016-09-29 8 views
0

У меня есть модель с некоторыми записями с собственным приоритетом.Rails shuffle с приоритетом

  1. Запись => Приоритет: 1
  2. Запись => Приоритет: 2
  3. Запись => Приоритет: 3
  4. Запись => Приоритет: 3
  5. Запись => Приоритет: 2
  6. Запись => приоритет: 1
  7. Запись => приоритет: 1
  8. Запись => приоритет: 4

Теперь мне нужна случайная запись, основанная на ее приоритете. Приоритет 1 является наихудшим. Приоритет 4 - лучший.

Теперь я получаю только случайную запись с @records.all.shuffle Каков наилучший способ совместить его с приоритетом?

+0

случайную запись на основании чего-то? как тогда это случайное? :) –

+0

Например, у вас есть партнеры по рекламе. Один партнер платит больше. Поэтому этот партнер должен быть предпочтительнее. –

ответ

1

Возможно, вам нужно что-то вроде:

max_priority = Record.maximum(:priority) 
Record.where(priority: max_priority).all.shuffle 

Postgresql образом:

Record.order('priority DESC, RANDOM()').first 
+0

Это был правильный намек для меня. У меня было затемнение. –