Estudei o código cuidadosamente e descobri que score_to_hide_post é determinado pelos seguintes três métodos:
def self.sensitivity_score_value(sensitivity, scale)
return Float::MAX if sensitivity == 0
ratio = sensitivity / sensitivities[:low].to_f
high =
(PluginStore.get("reviewables", "priority_#{priorities[:high]}") || typical_sensitivity).to_f
# Queremos que isso seja difícil de alcançar
((high.to_f * ratio) * scale).truncate(2)
end
def self.sensitivity_score(sensitivity, scale: 1.0)
# Se a pontuação for menor que a visibilidade padrão, aumente-a para esse nível.
# Caso contrário, teremos a situação confusa em que uma postagem pode ser ocultada e
# os moderadores nunca a verão!
[sensitivity_score_value(sensitivity, scale), min_score_for_priority].max
end
def self.score_required_to_hide_post
sensitivity_score(SiteSetting.hide_post_sensitivity)
end
Em outras palavras,
score_to_hide_post = ((high.to_f * ratio) * scale).truncate(2)
onde
high.to_fpode inesperadamente ser 0 (normalmente deveria ser um valor positivo),ratio = sensitivity / sensitivities[:low].to_f,sensitivityvem da configuração (por exemplo, 3, 6 ou 9),sensitivities[:low]= 9,scale = 1.0.
Isso significa que score_to_hide_post nunca deve ser 0, portanto, se ele se tornar 0, isso indica claramente um bug.