Я внимательно изучил код и обнаружил, что score_to_hide_post определяется следующими тремя методами:
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
# Мы хотим, чтобы это значение было труднодостижимым
((high.to_f * ratio) * scale).truncate(2)
end
def self.sensitivity_score(sensitivity, scale: 1.0)
# Если балл меньше порога видимости по умолчанию, поднимем его до этого уровня.
# В противном случае возникнет запутанная ситуация, когда пост может быть скрыт,
# и модераторы никогда его не увидят!
[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
Таким образом,
score_to_hide_post = ((high.to_f * ratio) * scale).truncate(2)
где:
high.to_fможет неожиданно оказаться равным 0 (обычно это должно быть положительное значение),ratio = sensitivity / sensitivities[:low].to_f,sensitivityберётся из настройки (например, 3, 6 или 9),sensitivities[:low]= 9,scale = 1.0.
Это означает, что score_to_hide_post никогда не должен быть равен 0. Если же он становится равным 0, это явно указывает на ошибку.