我正在使用第三方电子邮件服务来处理我的所有电子邮件,并且在尝试向客户重新发送邀请时遇到问题。
当我尝试执行以下操作时,没有可用的
raw_invitation_token
:
def resendInvitation
user = User.find(params[:id])
user = User.invite!(email: user.email, location_id: user.location_id) do |u|
u.skip_invitation = true
end
p "TOKEN: #{user.raw_invitation_token}" # TOKEN IS NIL
SendNewClientEmail.perform_later(user.id, user.raw_invitation_token)
end
这是处理邀请的作业:
class SendNewClientEmail < ApplicationJob
queue_as :default
def perform(user_id, token)
@user = User.find(user_id)
return unless @user.present? && @user.client.present?
client = @user.client
location = @user.location
email = @user.email
MailjetService.new(TEMPLATE_ID).send_email(
location.email,
email,
'Welcome!',
{
'client_id' => client.try(:id),
'token' => token
},
nil,
"#{location.name.titleize}"
)
end
end
我还可以如何访问该令牌以使电子邮件中的链接正常工作?是否有其他我可以使用的令牌或其他可行的方式?
这是因为用户已经创建了。基于文档参考
请尝试以下方法
用户 = User.find(:id)
user.invite!({skip_invitation: true }, current_user) # 当前用户可选设置invited_by属性
如果您已将 :skip_invitation 添加到属性哈希(如果将skip_invitation 添加到 attr_accessible),您也可以执行此操作。
User.invite!(skip_invitation:true)
使用skip_invitation时,您还必须在向用户发送令牌时设置invitation_sent_at字段。如果不这样做,当用户尝试接受邀请时将产生“无效邀请令牌”错误。