Ohne den Code genau anzusehen, bin ich mir zu 99 % sicher, dass das Problem auf der Rails-Seite und nicht auf der UX-Seite liegt. Daher glaube ich nicht, dass eine Änderung auf der Rails-Seite etwas beheben wird. Wenn Sie ein Budget haben, kann ich Ihnen helfen herauszufinden, wie Sie das tun können, was Sie verlangen, aber ich werde nicht versprechen, dass es Ihr Problem löst.
Sie können diejenigen finden, die Sie geändert haben, mit etwas wie diesem:
to=TranslationOverride.find(1)
to.value="Mein neuer Wert für die Überschreibung"
to.save
Ich verspreche nicht, dass dies funktionieren wird oder die Dinge nicht schlimmer macht. Aber im schlimmsten Fall sollten Sie Ihre Änderungen von der UX rückgängig machen können.
Ich glaube nicht, dass das Problem auf der Rails-Seite liegt, da die Benutzeroberfläche die erlaubten Tags falsch auflistet (diese Liste ist also irgendwo falsch hartcodiert), aber %{base_url} ansonsten einwandfrei geparst wird (siehe Thread), d. h. mit Rails sollte ich den Wert erzwingen können (jegliche Prüfungen umgehen).\n\nAber das ist alles eigentlich offtopic: Meine ursprüngliche Frage war nur nach einem Hinweis, welches Rails-Objekt ich ansprechen soll. Wenn Sie nur kostenpflichtige Hilfe anbieten können, werde ich warten und hoffen, dass jemand anderes bereit ist, kostenlose Hilfe anzubieten (das habe ich in anderen Threads getan, auch einige GitHub-PRs). Keine hard feelings :)\n\nEdit: Sie haben Ihren Beitrag bearbeitet, während ich getippt habe. Ich werde sehen, wie weit ich mit dem komme, was Sie vorgeschlagen haben (bin mir noch nicht sicher, wie ich das für mein spezifisches Beispiel anpassen kann). TranslationOverride könnte ein ausreichender Hinweis sein.
Es war ein ausreichender Hinweis, und ich habe auch den Fehler gefunden (der im Ruby-Code liegt):
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 ist der Schuldige … base_url ist gültig und wird auch problemlos geparst (wie ich im verlinkten Thread erklärt habe). Es scheint, dass ich entweder validations.rb hacken muss (igitt!) oder direkt die SQL-Datenbank bearbeiten muss (was ich nach dem Upgrade hatte) … jetzt muss ich also herausfinden, wo in der Postgre-Datenbank diese Vorlagen-Tags leben
p.s. Es ist eine so einfache und schnelle Lösung für die Entwickler (ich könnte einen PR machen, aber ich kenne nur eine Teilmenge von Tags, bei denen %{base_url} aus den gültigen Tags fehlt)
Bearbeiten: Die GUI zeigt es nicht sofort an (ich vermute Sidekiq-Caching). Ich habe ./launcher restart app dafür ausgeführt.
Zur Vervollständigung:
to=TranslationOverride.where(translation_key:\"user_notifications.user_watching_category_or_tag.text_body_template\").first
to.value=\"%{username} hat in \\\"[%{topic_title}](%{base_url}%{url})\\\" gepostet\\n\\n--\"
to.save(validate: false)