J’aimerais modifier directement dans Rails un modèle de texte, par exemple user_notifications.user_watching_first_post.text_body_template.
Quelqu’un pourrait-il m’indiquer les commandes de la console Rails pour cela ? Je ne suis pas un expert de Rails et je n’ai pas trouvé l’objet qui les contient.
Sans regarder attentivement le code, je suis sûr à 99 % que le problème se situe du côté de Rails et non du côté de l’UX, donc je ne pense pas que le modifier du côté de Rails résoudra quoi que ce soit. Si vous avez un budget, je peux vous aider à comprendre comment faire ce que vous demandez, mais je ne promets pas que cela résoudra votre problème.
Vous pouvez trouver ceux que vous avez modifiés avec quelque chose comme ceci :
Et ensuite les mettre à jour avec quelque chose comme
to=TranslationOverride.find(1)
to.value="Ma nouvelle valeur pour le remplacement"
to.save
Je ne promets pas que cela fonctionnera ou que cela n’aggravera pas les choses. Mais dans le pire des cas, vous devriez pouvoir annuler vos modifications depuis l’UX.
Je ne pense pas que le problème vienne de Rails, car l’interface utilisateur liste mal les balises autorisées (donc cette liste est mal codée en dur quelque part) mais %{base_url} est correctement analysé sinon (voir le fil de discussion), c’est-à-dire qu’avec Rails, je devrais pouvoir forcer la sauvegarde de la valeur (en contournant toutes les vérifications).
Mais tout cela est hors sujet, en réalité : ma question initiale portait juste sur un indice concernant l’objet Rails à cibler. Si vous ne pouvez proposer qu’une aide payante, j’attendrai en espérant que quelqu’un d’autre accepte de proposer une aide gratuite (j’ai fait cela dans d’autres fils de discussion, ainsi que quelques PR GitHub). Sans rancune
Edit : Vous avez modifié votre message pendant que je tapais. Je vais voir jusqu’où je vais avec ce que vous avez suggéré (je ne suis pas encore sûr de comment adapter cela à mon exemple spécifique). TranslationOverride pourrait suffire comme indice.
C’était suffisant comme indication, et j’ai aussi trouvé le bug (qui est dans le code 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 est le coupable… base_url est valide, et est bien analysé sans problème (comme je l’ai expliqué dans le fil de discussion lié). Il semble que je doive soit pirater validations.rb (beurk !) soit modifier directement la base de données SQL (ce que j’avais après la mise à niveau)… je dois donc maintenant trouver où dans la base de données PostgreSQL ces balises de modèle résident
p.s. C’est une correction tellement facile et rapide pour les développeurs (je pourrais faire une PR mais je ne connais qu’un sous-ensemble des balises où %{base_url} manque dans les balises valides)
Modification : L’interface graphique ne l’affiche pas immédiatement (je suppose que c’est la mise en cache de Sidekiq). J’ai fait un ./launcher restart app pour cela.
Pour information :
to=TranslationOverride.where(translation_key:\"user_notifications.user_watching_category_or_tag.text_body_template\").first
to.value=\"%{username} a posté dans \\\"[%{topic_title}](%{base_url}%{url})\\\"\\n\\n--\"
to.save(validate: false)