【问题标题】:How to send a mailer when specific model attribute is updated更新特定模型属性时如何发送邮件
【发布时间】:2015-06-23 11:34:47
【问题描述】:

我有一个包含文章模型的应用。用户可以在文章被编辑时关注文章以接收电子邮件。

目前,对于模型的每个属性的每次 picayune 更改都会发送电子邮件。我想指定仅在更改特定属性时才发送邮件,或者在电子邮件中包含在最新更新中更改的属性列表。

我正在使用 paper_trail 来跟踪文章 s.t. 的版本。仅当主要属性发生更改时才会创建新版本。这似乎是一个方便的回调挂钩。即,当创建新版本时,会发送更新。但我不确定是否需要手动创建 Papertrail 模型或执行其他操作。

另外,要创建更改的属性列表,我想我可以使用 changed.keys 方法返回已更改的属性列表,但只能在保存实例之前。我以为我可以做类似的事情:

def update
      @article = Article.friendly.find(params[:id])
      @changes = @article.changed
      if @article.update_attributes(article_params)

...

但是如何将@changes 传递给邮件程序?

任何想法表示赞赏!

【问题讨论】:

    标签: ruby-on-rails actionmailer paper-trail-gem


    【解决方案1】:

    可以调用after_update回调方法

    models/article.rb

    after_update :send_email
    
    def send_email
      UserMailer.email_notification(self.user).deliver
    end
    

    【讨论】:

    • 如何指定仅在更新中更改特定属性时发送邮件,或者在电子邮件正文中通信,哪些模型字段已更改?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多