根据更改的区域设置

时间:2018-01-25 17:16:13

标签: ruby-on-rails ruby database

我有一个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的批量更新,以便他们使用新的预定义模板,如果他们没有自己的自定义消息。

我将非常感谢您的帮助!

0 个答案:

没有答案