Hilfe mit der Rails-Konsole zum Bearbeiten von Textvorlagen

Ich möchte eine Textvorlage direkt in Rails bearbeiten, z. B. user_notifications.user_watching_first_post.text_body_template.

Kann mir jemand bitte die Rails-Konsolenbefehle dafür zeigen? Ich bin kein Rails-Experte und konnte das Objekt, das diese enthält, nicht finden.

1 „Gefällt mir“

(Das weiß ich aus dem Stegreif nicht). Welches Problem löst das? Warum nicht über die UX oder die API?

1 „Gefällt mir“

Bezieht sich auf sein anderes Thema: 3.2.x still ignores some custom email templates.

Es scheint, dass Vorlagenänderungen ignoriert werden.

Sind Sie sicher, dass Sie für die gewünschte Sprache bearbeiten?

1 „Gefällt mir“

Ja, obwohl es eher mit diesem Problem zusammenhängt.

Die GUI für Vorlagen ist sehr fehlerhaft, daher möchte ich sie irgendwie lösen.

1 „Gefällt mir“

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:

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

Und dann aktualisieren Sie sie mit etwas wie

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.

1 „Gefällt mir“

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 :frowning:

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)

1 „Gefällt mir“

Tatsächlich:

to.save(validate: false)

… hat einwandfrei funktioniert.

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)
2 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.