我有一个有文章模型的应用。每当编辑该文章时,用户都可以关注文章来接收电子邮件。
目前,每次picayune更改都会将电子邮件发送到模型的每个属性。我想指定只在特定属性发生更改时才发送邮件,或者在电子邮件中包含最新更新中更改的属性列表。
我正在使用paper_trail来跟踪文章的版本。仅在主要属性发生更改时才会创建新版本。对于回调来说,这似乎是一个方便的挂钩。即,当创建新版本时,将发送更新。但我不确定是否需要手动创建Papertrail模型或执行其他操作。
另外,要创建已更改属性的列表,我想我可以使用changed.keys方法返回已更改的属性列表,但仅在保存实例之前。我以为我可以这样做:
def update
@article = Article.friendly.find(params[:id])
@changes = @article.changed
if @article.update_attributes(article_params)
...
但是如何将@change传递给邮件程序?
任何想法都赞赏!
答案 0 :(得分:0)
您可以调用after_update
回调方法
模型/ article.rb
after_update :send_email
def send_email
UserMailer.email_notification(self.user).deliver
end