我希望在通过rails admin创建内容后向用户发送电子邮件。
我知道我可以在模型回调中调用它,但它不被视为好pratices
最好的方法是将动作管理器操作放在控制器中的模型保存之后,但我不知道如何在rails_admin控制器中执行此操作
class UsersController < ApplicationController
# POST /users
# POST /users.json
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
# Tell the UserMailer to send a welcome email after save
UserMailer.welcome_email(@user).deliver_later
format.html { redirect_to(@user, notice: 'User was successfully created.') }
format.json { render json: @user, status: :created, location: @user }
else
format.html { render action: 'new' }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
end
答案 0 :(得分:0)
您是否尝试将您的邮件程序包含在admin_controller中?
include UserMailer
然后在您的创建操作UserMailer.some_mailer_action.deliver_now
答案 1 :(得分:0)
你想要做的事情在rails admin上并不容易,因为你不能修改控制器,也没有猴子修补它们就可以访问它们。
我实际上为这个功能做了一个rails管道管理员检查提交的更改: https://github.com/aliada-mx/rails_admin/commit/6251554efd1d83cdb418f42683ee55a4e27c2474 刚触及两个文件
示例用法
class User
after_save :on_admin_updates
attr_accessor :edited_in_rails_admin
def on_admin_updates
return unless edited_in_rails_admin
self.edited_in_rails_admin = false
UserMailer.welcome_email(self.id)
end
end
我知道有点笨重,PR欢迎。