设计邀请:使用令牌重新发送自定义邀请

问题描述 投票:0回答:1

我正在使用第三方电子邮件服务来处理我的所有电子邮件,并且在尝试向客户重新发送邀请时遇到问题。

当我尝试执行以下操作时,没有可用的

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

我还可以如何访问该令牌以使电子邮件中的链接正常工作?是否有其他我可以使用的令牌或其他可行的方式?

ruby-on-rails devise devise-invitable
1个回答
0
投票

这是因为用户已经创建了。基于文档参考

请尝试以下方法

用户 = 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字段。如果不这样做,当用户尝试接受邀请时将产生“无效邀请令牌”错误。

© www.soinside.com 2019 - 2024. All rights reserved.