每当管理员向用户添加评论时,我都需要发送电子邮件。 我正在使用主动管理员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"
我不知道如何访问这些功能。请帮忙。
答案 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