加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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中,(手

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读