私はこの回答を投稿してすぐにそれを忘れてしまったので、upvoteがそれについて私に思い出させた。私はそれが仕事作り、私の解決策を共有することに成功し得た場合、誰がそれを探しています:
class DynamicTemplateModel < ActiveRecord::Base
def self.parse_template(template, attrs={})
result = template
attrs.each { |field, value| result.gsub!("{{#{field}}}", value) }
# remove anything that resembles a field but did not match a known field name
result.gsub!(/\{\{\.w+\}\}/, '')
return result
end
end
使用:DynamicTemplate.parse_template(body, details)
details = {first_name: user.first_name, last_name: user.last_name, company: user&.company&.name, email_address: user.email}
と
body = "Hi {{first_name}} {{last_name}}, Your company {{company}} is registered with us successfully"
付きparse_template
メトd、新しいボディは期待どおりになります。
私の主な関心事はdiofeher solutionで、文字列の置換についてはセキュリティが問題でした。それでこれで管理してください。
これは誰かを助けることを望みます。より良いものにするための提案を残してください。ありがとう
私はこれを行うことはできません恐れています。これは非常に安全ではない方法であり、SQLインジェクションを受けやすいものです。私が 'first_name'をvalueに置き換えなければならない画像と、' user'の 'first name'の値は' User.delete_all'です。それがここで置き換えられると、私の文字列は '<%= User.delete_all%>'のようになります。私はここで何か他のことを言う必要はないと思う。私のデータベースはすべてのデータがなくなって崩壊します。 – Aakanksha
これはユーザーが使用する予定ですか?私はあなたのチームだけがそれを使うと思っていました。 – diofeher
エンドユーザーは、電子メールを送信する予定のユーザーのデータでタグを置き換えるテンプレートを準備する必要があります。私は私の解決策を共有しました。それに関する提案は歓迎されます。ありがとう – Aakanksha