提问人:Jeremy Thomas 提问时间:9/20/2023 更新时间:9/20/2023 访问量:36
设计 invitable:使用令牌重新发送自定义邀请
Devise invitable: Resend custom invitation with token
问:
我正在使用第三方电子邮件服务来处理我的所有电子邮件,但在尝试向客户重新发送邀请时遇到了问题。
当我尝试执行以下操作时,没有可用的操作: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
我还能如何访问该令牌,以便电子邮件中的链接能够正常工作?我可以使用其他代币或其他方式吗?
答:
0赞
Dev Kumar
9/20/2023
#1
这是因为用户已经创建。基于文档参考
请尝试以下操作
用户 = User.find(:id)
user.invite!({ skip_invitation: true }, current_user) # 当前用户设置invited_by属性是可选的
如果已将 :skip_invitation 添加到属性哈希中,也可以执行此操作skip_invitation如果已添加到attr_accessible中。
User.invite!(skip_invitation:真)
使用 skip_invitation 时,还必须在向用户发送令牌时设置invitation_sent_at字段。如果不这样做,当用户尝试接受邀请时,将产生“无效的邀请令牌”错误。
评论
0赞
Jeremy Thomas
9/21/2023
我会接受这个。诀窍是使用 而不是,然后一切都按预期工作。user.invite
User.invite
0赞
Dev Kumar
11/1/2023
谢谢@JeremyThomas。很乐意帮忙。
评论