0

我已设置公共活动以显示通知。通知是使用正确的收件人创建的。

现在我想向通知收件人发送电子邮件。

通常我会在控制器创建时调用邮件程序。但是在通知控制器上,我只得到了索引:

 def index
    @activities = PublicActivity::Activity.where(recipient_id: current_user.id).includes(:owner).includes(:trackable).all.reverse
  end

例如在comment.rb 我有:

include PublicActivity::Model
   tracked

   tracked owner: Proc.new{ |controller, model| controller.current_user }


   tracked recipient: ->(controller, model) { model && model.commentable.user }

并查看comment_create

<li class="list-group-item">
  <span class="glyphicon glyphicon-plus"></span>
  <small class="text-muted"><%= a.created_at.strftime('%H:%M:%S %-d %B %Y') %></small><br/>
  <strong><%= activity.owner ? activity.owner.name : current_user.name %></strong> commented

  - <%= a.trackable.body %> - to
  <%= link_to 'this item you posted.', poll_path(a.trackable.commentable_id) %>
</li>

我猜通知的创建是由 gem 在内部完成的。

那我应该在哪里打电话给邮递员?

4

2 回答 2

1

添加新文件config/initializers/activity.rb

module PublicActivity
  class Activity < inherit_orm("Activity")
    after_create :send_email

    def send_email
      # Your code to send mail based on activity's data goes here
    end
  end
end
于 2017-12-01T10:08:50.103 回答
-1

您可以将邮件程序放在后台作业中,然后在控制器索引中调用它。

于 2017-11-30T18:30:27.320 回答