コードを注意深く調べたところ、score_to_hide_post は次の 3 つの方法によって決定されることがわかりました。
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_fsensitivityは設定(たとえば 3、6、または 9)から取得されます。sensitivities[:low]= 9scale = 1.0
これは、score_to_hide_post が 0 になることは決してないことを意味するため、0 になった場合は明らかに バグ を示しています。