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
我对 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