レールで user_notifications.user_watching_first_post.text_body_template のようなテキストテンプレートを直接編集したいのですが、それらを持つオブジェクトが見つからず、レールに詳しくないので、それを行うためのレールコンソールコマンドを教えていただけますか?
(すぐにはわかりません)。それはどのような問題を解決していますか?なぜUXまたはAPIからそれを行わないのですか?
他のトピックに関連しています: 3.2.x still ignores some custom email templates.
テンプレートの変更が無視されているようです。
目的の言語を編集していることを確認しましたか?
はい、この問題により関連しています: Email notification template GUI complains about %{base_url} - #11 by nordize
テンプレートのGUIは非常にバグが多いので、なんとか解決したいです。
コードを注意深く見なくても、問題はRails側にありUX側にはない可能性が99%高いので、Rails側を変更しても何も解決しないと思います。予算があれば、ご要望の実現方法を特定するお手伝いができますが、問題が解決することを保証するものではありません。
変更したものは次のようなもので見つけることができます。
TranslationOverride.all.pluck(:id, :translation_key)
そして、次のようなもので更新できます。
to=TranslationOverride.find(1)
to.value="My new value for the override"
to.save
これが機能するか、または状況を悪化させないかは保証しません。しかし、最悪の場合でも、UXから変更を元に戻すことができるはずです。
UI が許可されるタグを誤ってリストしている (そのため、そのリストはどこかに誤ってハードコーディングされている) ため、問題は Rails 側にあるとは思いませんが、それ以外の場合は %{base_url} は問題なく解析されます (スレッドを参照)。つまり、Rails を使用すれば、(チェックをバイパスして) 値を強制的に保存できるはずです。
しかし、これらはすべて本題から外れています。私の元の質問は、対象となる Rails オブジェクトについてのポインタだけでした。有料のヘルプしか提供できないのであれば、他の誰かが無料のヘルプを提供してくれるのを待つつもりです (他のスレッドでも、また GitHub のプルリクエストでもそうしてきました)。悪く思わないでください ![]()
編集: 入力中に投稿を編集しました。提案された内容でどこまでできるか試してみます (まだ自分の特定の例にどのように適応させるかはわかりません)。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 は有効であり、(リンクされたスレッドで説明したように)問題なく解析されます。検証をハックするか(うーん!)直接PostgreSQLデータベースを編集する必要があるようです(アップグレード後に私が持っていたものです)。したがって、PostgreSQLデータベースのどこにこれらのテンプレートタグが存在するのかを見つける必要があります。![]()
追伸。開発者にとっては非常に簡単で迅速な修正です(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)
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.