Помощь с Rails console для редактирования текстового шаблона

Я хотел бы отредактировать текстовый шаблон напрямую в Rails, например, user_notifications.user_watching_first_post.text_body_template.

Не могли бы вы подсказать команды для консоли Rails, чтобы это сделать? Я не очень хорошо разбираюсь в Rails и не могу найти объект, который хранит эти данные.

Я не знаю, как это сделать прямо сейчас. Какую проблему это решает? Почему бы не сделать это через UX или API?

Связано с его другой темой: 3.2.x still ignores some custom email templates.

Похоже, что изменения шаблонов игнорируются.

Вы уверены, что редактируете нужный язык?

Да, хотя это больше связано с этой проблемой.

Графический интерфейс для шаблонов работает очень нестабильно, поэтому я хотел бы как-то решить эту проблему.

Не вглядываясь внимательно в код, я на 99% уверен, что проблема на стороне Rails, а не UX, поэтому я не думаю, что изменение чего-либо на стороне Rails исправит ситуацию. Если у вас есть бюджет, я могу помочь разобраться, как реализовать то, что вы просите, но не обещаю, что это решит вашу проблему.

Вы можете найти те, которые вы изменили, используя что-то вроде этого:

TranslationOverride.all.pluck(:id, :translation_key)

А затем обновить их с помощью чего-то вроде

to=TranslationOverride.find(1)
to.value="Мое новое значение для переопределения"
to.save

Я не обещаю, что это сработает или не ухудшит положение. Но в худшем случае вы сможете отменить свои изменения на стороне UX.

Я не думаю, что проблема на стороне Rails, поскольку UI ошибочно отображает список разрешённых тегов (значит, этот список где-то неправильно захардкожен), но %{base_url} при этом парсится корректно (см. ветку). То есть с Rails я должен иметь возможность принудительно сохранить значение (обойдя любые проверки).

Но всё это, честно говоря, оффтоп: мой первоначальный вопрос был просто о подсказке, какой объект Rails нужно таргетировать. Если вы можете предложить только платную помощь, я подожду, надеясь, что кто-то другой захочет помочь бесплатно (я уже делал так в других ветках, также есть несколько PR на GitHub). Никаких обид :slight_smile:

Редактирование: Вы отредактировали свой пост, пока я печатал. Я посмотрю, насколько далеко смогу продвинуться с тем, что вы предложили (пока не уверен, как адаптировать это для моего конкретного примера). Возможно, TranslationOverride будет достаточно в качестве подсказки.

Это было достаточно, и я также нашел ошибку (она находится в коде Ruby):

to=TranslationOverride.where(translation_key:"user_notifications.user_watching_category_or_tag.text_body_template").first
to.value="%{username} posted in \"[%{topic_title}](%{base_url}%{url})\"\n\n--"
to.save!
ActiveRecord::RecordInvalid: Validation failed: The following interpolation key is invalid: base_url
from /var/www/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.8/lib/active_record/validations.rb:80:in `raise_validation_error'

validations.rb — это проблема… base_url корректен и успешно парсится (как я объяснял в связанной теме). Похоже, мне придется либо взломать validations.rb (фу!), либо напрямую редактировать SQL-базу данных (что я делал после обновления)… теперь мне нужно найти, где в базе данных PostgreSQL хранятся эти теги шаблонов :frowning:

p.s. Для разработчиков это, конечно, очень простое и быстрое исправление (я мог бы отправить PR, но знаю лишь подмножество тегов, где %{base_url} отсутствует в списке допустимых).

На самом деле:

to.save(validate: false)

… сработало отлично.

Редактирование: GUI не показывает это сразу (полагаю, кэширование Sidekiq). Я выполнил ./launcher restart app для этого.

Для полноты картины:

to=TranslationOverride.where(translation_key:"user_notifications.user_watching_category_or_tag.text_body_template").first
to.value="%{username} опубликовал(а) в \"[%{topic_title}](%{base_url}%{url})\"\n\n--"
to.save(validate: false)