ウォッチワードを含む投稿はすべて自動的に非表示になります — score_to_hide_post は 0.0 です

コードを注意深く調べたところ、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_f
  • sensitivity は設定(たとえば 3、6、または 9)から取得されます。
  • sensitivities[:low] = 9
  • scale = 1.0

これは、score_to_hide_post0 になることは決してないことを意味するため、0 になった場合は明らかに バグ を示しています。