我想直接在 Rails 中编辑一个文本模板,例如 user_notifications.user_watching_first_post.text_body_template。
有人能帮我指出用于此目的的 Rails 控制台命令吗?我不太懂 Rails,也找不到保存这些模板的对象。
我想直接在 Rails 中编辑一个文本模板,例如 user_notifications.user_watching_first_post.text_body_template。
有人能帮我指出用于此目的的 Rails 控制台命令吗?我不太懂 Rails,也找不到保存这些模板的对象。
(我一时不知道该怎么做)。它解决了什么问题?为什么不从用户体验或 API 来做?
与其另一个主题相关:https://meta.discourse.org/t/3-2-x-still-ignores-some-custom-email-templates/308203。
似乎模板修改被忽略了。
您确定您编辑的是目标语言吗?
是的,尽管这与此问题更相关。
模板的GUI非常不稳定,所以我想以某种方式解决它。
不仔细看代码,我99%确定问题出在Rails端,而不是UX端,所以我认为在Rails端进行更改不太可能解决任何问题。如果你有预算,我可以帮你弄清楚如何实现你的要求,但不能保证能解决你的问题。
你可以用类似这样的方法找到你已更改的内容:
TranslationOverride.all.pluck(:id, :translation_key)
然后用类似这样的方法更新它们:
to=TranslationOverride.find(1)
to.value="My new value for the override"
to.save
我不保证这会奏效或不会让情况变得更糟。但最坏的情况下,你应该能够撤销你在UX中的更改。
我认为问题不在于 Rails 方面,因为 UI 错误地列出了允许的标签(因此该列表在某处被错误地硬编码了),但 %{base_url} 否则会被正确解析(请参阅线程),也就是说,使用 Rails 我应该能够强制保存值(绕过任何检查)。
但这都离题了:我最初的问题只是想知道要针对哪个 Rails 对象。如果您只能提供付费帮助,那么我将等待,希望其他人愿意提供一些免费帮助(我在其他帖子中也这样做过,也提交了一些 GitHub PR)。没有恶意 ![]()
*编辑:*您在我打字时编辑了您的帖子。我将看看您建议的方法能让我走多远(还不确定如何将其应用于我的具体示例)。TranslationOverride 可能足以提供一个方向。
这足以作为提示,而且我还找到了 bug(在 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 数据库(这是我升级后所做的)……所以现在我需要找到 postgre 数据库中这些模板标签的位置 ![]()
附注:这对开发者来说是一个非常简单快捷的修复(我可以做一个 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.