ruby-on-rails – 使用deliver_later时无法在邮件程序中访问attr
发布时间:2020-12-17 02:25:54 所属栏目:百科 来源:网络整理
导读:我正在使用devise_invitable邀请用户访问应用,因为我想在电子邮件中添加自定义消息.所以我的代码看起来像这样. #user.rbattr_accessor :messagedef self.invite(emails,message) User.invite!({email: email}) do |user| user.message = message endend#here
我正在使用devise_invitable邀请用户访问应用,因为我想在电子邮件中添加自定义消息.所以我的代码看起来像这样.
#user.rb attr_accessor :message def self.invite(emails,message) User.invite!({email: email}) do |user| user.message = message end end #here I am overriding devise_invitable method to send mails later def send_devise_notification(notification,*args) devise_mailer.send(notification,self,*args).deliver_later end #users_controller.rb def invite_user User.invite(params[:email],params[:message]) end #invitation_instructions.html.erb <% if @resource.message %> <p><%= @resource.message %></p> <% end %> 当我只使用传递时,邮件显示在邮件程序上,但是当我在邮件程序视图中使用nil中的deliver_later attr_accessor时. 解决方法
attr_accessor不起作用,因为deliver_later将您的User对象序列化为
GlobalID.当传递作业运行时,作业进程将从数据库重新加载您的用户(当然,该对象不包括对象上的任何实例变量).您可能需要将消息传递给作业(也许您可以将其隐藏到* args中,(手
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |