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を作成する必要があり、メーラーはredisを使用してメールを非同期で送信するため、IDのみを渡すことに注意してください。これがない場合は、オブジェクトを渡すことができます。

同じ方法での作成アクションを上書きしようとしましたAdmin::CommentsControllerが、機能しませんでした。電子メールの送信はモデルよりもコントローラーの仕事であるため、これをコントローラーに含めるとはるかに便利です。これを行う方法はありますか?

...わかりました...同じ質問に対処し、いくつかの良い答えを得たアクティブな管理者の問題についてコメントしました...

于 2012-10-23T15:12:46.127 に答える
0

これはコントローラーロジックであるため、コントローラーに配置するのが最適です。https://github.com/activeadmin/activeadmin/issues/2493#issuecomment-24892236をご覧ください。

基本的に、コメントコントローラを変更するには、ロード後に行う必要があります。

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 に答える