/latest からのトピックの一括非表示が期待通りに動作しない

皆さん、こんにちは。

現在、Suppress category from latest プラグインを使用して、トピックを /latest ページに表示させずに、それぞれのカテゴリ内に表示させています。非表示にしたいカテゴリが約200個あり、ホームページにトピックを表示させたいカテゴリは約10個です。

これを達成するために、Rails コンソールで以下のコードを実行してみました。

Category.all.each do |cat|
  cat.custom_fields["suppress_latest"] = true
  cat.save_custom_fields(true)
end

コマンドはエラーなく実行されているように見えます({"suppress_latest"=>"t"} が返ってきます)。しかし、/latest ページを確認しても、それらのカテゴリのトピックはまだ表示されています。

すでに試した手順は以下の通りです。

  • ./launcher rebuild app および ./launcher restart app を実行しました。
  • Rails コンソール経由で、影響を受けるカテゴリのカスタムフィールドが \"t\" に設定されていることを確認しました。
  • キャッシュのクリアも試しましたが、何も変わりませんでした。

カスタムフィールドを設定した後でも、これらのカテゴリのトピックがホームページに表示されるようです。この問題に遭遇した方、または /latest からトピックを一括で非表示にする効果的な方法を見つけた方はいらっしゃいますか?サブカテゴリとの互換性の問題があるのでしょうか、それともプラグインは非表示のために異なるキー/値を使用すべきなのでしょうか?

何かガイダンスや代替アプローチがあれば、ぜひ教えてください!

ありがとうございます!

コアをざっと見ても、コードに suppress_latest は見つかりません。

サイト設定の「デフォルトですべてのカテゴリをミュートする」をご希望でしょうか?

「いいね!」 1

プラグイン作者です!

cat.custom_fields[:suppress_category_from_latest] = true

であるべきですが…これらの値はクラス変数にもキャッシュされています。これに対処する最も簡単な方法は、カテゴリも save! することです(こちら を参照)。

したがって、これは機能します

Category.all.each do |cat|
  cat.custom_fields[:suppress_category_from_latest] = true
  cat.save_custom_fields(true)
  cat.save!
end
「いいね!」 4

RGJ様

ご指導いただき、誠にありがとうございました。Railsコンソールで以下のコマンドを実行しました。

Category.all.each do |cat|
  cat.custom_fields[:suppress_category_from_latest] = true
  cat.save_custom_fields(true)
  cat.save!
end

すべて完璧に機能しました!これで、カテゴリは正常に /latest ページから除外されるようになりました。大変助かりました。

よろしくお願いいたします。

「いいね!」 3

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.