3

每当管理员向用户添加评论时,我都需要发送电子邮件。我正在使用活动管理员 0.4.3

在此处输入图像描述

如何获取此活动并发送电子邮件。当我发表评论时,在我的控制台中,我可以看到执行了以下操作

Started POST "/admin/comments"
Redirected to http://localhost:3000/admin/comments/182
Started GET "/admin/comments/182"
Started GET "/admin/accounts/227"

我不知道如何访问这些功能。请帮忙。

4

2 回答 2

3

我通过将此代码添加到您的 config/initializers/...

module ActiveAdmin

  class Comment  < ActiveRecord::Base

    after_create :send_email

    def send_email
      AdminMailer.comment_created(self.id).deliver
    end

  end

end

请注意,您必须编写 AdminMailer,并且我们只传递 id,因为我们的邮件程序使用 redis 异步发送邮件。如果你没有这个,你可以传递对象。

我试图以Admin::CommentsController相同的方式覆盖的创建操作,但没有奏效。在控制器中包含它会更好,因为发送电子邮件更多的是控制器的业务而不是模型的业务。任何想法如何做到这一点?

...好的...评论了一个活跃的管理问题,该问题解决了相同的问题并得到了一些很好的答案...

于 2012-10-23T15:12:46.127 回答
0

由于这是控制器逻辑,因此最好将其放入控制器中。你可以看看https://github.com/activeadmin/activeadmin/issues/2493#issuecomment-24892236

基本上,要修改 Comment 控制器,您必须在加载后进行:

ActiveAdmin.after_load do
  ActiveAdmin.register ActiveAdmin::Comment, as: 'Comment' do
    controller do
      after_action :send_email, only: [:create]

      def send_email
        AdminMailer.comment_created(self.id).deliver
      end
    end
  end
end
于 2017-02-08T14:57:38.453 回答