如何在更新特定模型属性时发送邮件程序

时间:2015-06-23 11:34:47

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

我有一个有文章模型的应用。每当编辑该文章时,用户都可以关注文章来接收电子邮件。

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

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

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

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

...

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

任何想法都赞赏!

1 个答案:

答案 0 :(得分:0)

您可以调用after_update回调方法

模型/ article.rb

after_update :send_email

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