Массовое скрытие тем из /latest работает некорректно

Всем привет,

Сейчас я использую плагин Suppress category from latest, чтобы скрыть темы со страницы /latest, оставив их видимыми в соответствующих категориях. У меня около 200 категорий, которые нужно скрыть с /latest, и только около 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 в коде.

Возможно, вы имеете в виду настройку сайта «Отключить все категории по умолчанию»?

Здесь автор плагина!

Должно быть

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

Привет, RGJ,

Огромное спасибо за твои советы. Я выполнил следующую команду в консоли Rails:

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

Всё сработало идеально! Мои категории теперь успешно скрыты со страницы /latest. Я очень ценю твою помощь.

С наилучшими пожеланиями,