如何在rails 3中自定义活动管理员评论功能

时间:2012-10-18 09:28:03

标签: ruby-on-rails-3 ruby-on-rails-3.2 activeadmin

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

enter image description here

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

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

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

2 个答案:

答案 0 :(得分: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的创建操作,但它不起作用。在控制器中使用它会更好,因为发送电子邮件更像是控制器的业务,而不是模型的业务。任何想法如何做到这一点?

...好......评论active admin issue对同一问题进行了解答并得到了一些好的答案......

答案 1 :(得分: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