Одно изображение для нескольких категорий

Добрый день,

У меня вопрос: можно ли загрузить одно изображение для категории и использовать это же загруженное изображение для подкатегорий и под-подкатегорий? Ниже приведена структура:

Категория A
    Категория A1
    Категория A2
    Категория A3
    Категория A4

Категория B
    Категория B1
        Категория B11
        Категория B12
    Категория B2
    Категория B3
    Категория B4
        Категория B41
        Категория B42

Категория C
    Категория C1
        Категория C11

Категория D
    Категория D1
    Категория D2
    Категория D3
    Категория D4

У категорий A–D есть изображение для категории. При переходе на первый уровень отображается изображение этой категории, а при переходе на третий уровень изображение не показывается, поэтому мне приходится добавлять его вручную. К сожалению, у меня очень много категорий (не по моему выбору), так что это много работы и это расходует место на диске сервера (назовите меня старомодным, я привык работать с ресурсами, имеющими очень ограниченные возможности).

Наследование было бы первым решением. Есть ли другие способы добиться того, чтобы мне нужно было загружать изображение только один раз и, желательно, не редактировать каждую под-подкатегорию?

Обратите внимание, что я полный новичок в Discourse и в настоящее время обновляю существующий сайт на базе Discourse.

Заранее спасибо.

Это не так. Изображения хранятся по хешу, поэтому создаётся/хранится только одна копия, независимо от того, сколько раз оно было загружено.

Если у вас есть доступ к Rails, вы можете сделать что-то вроде этого:

parent = Category.find_by_slug('category_a');
children = Category.where(parent_category_id: parent.id);
children.update_all(uploaded_logo_id: parent.uploaded_logo_id);

Точка с запятой в конце предотвращает вывод результата в консоль Rails, так что вы можете вставить все три строки сразу. При тестировании вы можете их опустить. Обязательно сделайте резервную копию и будьте готовы её восстановить, если вы не пробовали это сначала на тестовом или staging-сервере.

Вы можете предложить вашим руководителям прочитать Пора поговорить о тегах. Или, возможно, есть веская причина для всех этих подкатегорий. Если вам не нужно ограничивать доступ к этим подкатегориям или люди не захотят следить/отключать уведомления о них, то они, скорее всего, только ухудшат ситуацию для всех (кроме того, кто получит право хвастаться, что его плохая идея была принята всей компанией).

Спасибо за ответ.

Отлично, одна проблема меньше.

У меня есть доступ только к тестовому сайту (размещён на Discourse), поэтому, думаю, у меня нет доступа к Ruby :wink:

В таком случае вы могли бы попытаться сделать что-то подобное с помощью API, но в этом случае вы действуете самостоятельно. Начните с обратного проектирования API Discourse

Эй, послушай, я же сказал, что я новичок :rofl:

Спасибо за две ссылки, которые ты предоставил :+1:

Да, извините. Если вы уже умеете работать с API (возможно, через curl), то, боюсь, вам придётся просто много кликать мышкой.