나는이 대답을 게시하고 곧 잊어 버렸고 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의'firstname' 값을'User.delete_all'로 바꾸어야하는 이미지입니다. 여기서 대체되면, 문자열은'<% = User.delete_all %>'와 같을 것입니다. 나는 여기서 다른 말을 할 필요가 없다고 생각합니다. 모든 데이터가 사라지면 데이터베이스가 무너집니다. – Aakanksha
오, 그래서 이것은 사용자가 사용하게 될 것입니까? 나는 그것이 당신의 팀에 의해서만 사용 될 것이라고 생각했습니다. – diofeher
최종 사용자가 전자 메일을 보낼 사용자의 데이터로 태그를 대체 할 템플릿을 준비하는 데 필요합니다. 내 솔루션을 공유했습니다. 그것에 관한 제안을 환영합니다. 감사 – Aakanksha