我有一个Rails应用程序,用户可以选择默认或自定义电子邮件内容。如果用户编写自己的内容,则默认内容会被自定义内容覆盖。
该应用拥有众多用户,其中大多数用户尚未定义自定义内容。到目前为止,默认内容只是一个草稿,最近我在区域设置中将其更改为新的内容。
不幸的是,只有新用户在注册后才能使用新的默认内容。年龄较大的用户仍然有草稿。我想对用户执行批量更新,以便他们也有新的默认消息内容。
代码如下:
该服务定义电子邮件是自定义的还是默认的:
class CreateEmailMessage
def call(job)
job.custom_email_message || job.job_message_template.email_body
end
end
下面的方法定义了应该使用的模板:
def job_message_template
job_message_templates.public_send(severity_key)
end
因为模板是以哈希定义的:
DEFAULT_VIDEO_MESSAGE_TEMPLATES = {
"low" => {
"text_body" => I18n.t("locale1"),
"email_subject" => I18n.t("locale2"),
"email_body" => I18n.t("locale3")
},
"medium" => {
"text_body" => I18n.t("locale4"),
"email_subject" => I18n.t("locale5"),
"email_body" => I18n.t("locale6")
},
"high" => {
"text_body" => I18n.t("locale7"),
"email_subject" => I18n.t("locale8"),
"email_body" => I18n.t("locale9")
},
"thank_you" => {
"text_body" => I18n.t("locale10"),
"email_subject" => I18n.t("locale11"),
"email_body" => I18n.t("locale12")
},
"additional_work" => {
"text_body" => I18n.t("locale13"),
"email_subject" => I18n.t("locale14"),
"email_body" => I18n.t("locale15")
}
}.freeze
总而言之,我想执行user.job_message_template
的批量更新,以便他们使用新的预定义模板,如果他们没有自己的自定义消息。
我将非常感谢您的帮助!