Rails 优先洗牌

Rails shuffle with priority

我有一个模型,其中包含一些具有自己优先级的记录。

  1. 记录 => 优先级:1
  2. 记录 => 优先级:2
  3. 记录 => 优先级:3
  4. 记录 => 优先级:3
  5. 记录 => 优先级:2
  6. 记录 => 优先级:1
  7. 记录 => 优先级:1
  8. 记录 => 优先级:4

现在我需要一个基于优先级的随机记录。 优先级 1 是最差的。 优先级 4 最好。

现在我只得到一个随机记录 @records.all.shuffle 将其与优先级结合起来的最佳方式是什么?

也许您需要这样的东西:

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

Postgresql 方式:

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