ruby on rails 将值传递给 .last()

ruby on rails pass a value to .last()

我对 rails 上的 ruby 还很陌生,所以我可能遗漏了一些语法。大图 我正在尝试获取指定百分位数的值。从概念上讲,我正在获取我的 table 'Scores',对其进行排序,获取最后的 'x' 值,然后获取第一个值。我似乎无法弄清楚如何将基于数据集长度的 'x' 传递给链。

def get_percentile()
  record_count = Scores.count(:id)*0.05
  record_threshold = record_count.round()
  Score_percentile = Scores.order(:points).last(record_threshold).first().points
  return Score_percentile
end
get_percentile

如果我只输入 .last(20) 这会按我预期的那样工作,所以我只是不知道如何传递变量。 谢谢

您可能会通过舍入将 0 传递到 .last() 函数中。

有多种选择可确保您至少通过 1

[record_threshold, 1].max至少会给你1个。https://apidock.com/ruby/Enumerable/max

.round() 更改为 .ceil() 在所有情况下都向上舍入。 https://apidock.com/ruby/Float/ceil