Ruby on rails 根据用户类型设计不同的电子邮件发送方式

Ruby on rails 根据用户类型设计不同的电子邮件发送方式,ruby-on-rails,ruby,devise,devise-invitable,Ruby On Rails,Ruby,Devise,Devise Invitable,在以前的版本中,我使用Desive_invitable向不同的用户角色发送不同的邀请电子邮件。例如,管理员用户将收到与普通用户不同的邀请。要向用户发送不同的电子邮件,我执行了以下操作: @user = User.invite!(params[:user], current_user) do |u| u.skip_invitation = true end if params[:admin_id] # admin invite @user.deliver_invitation

在以前的版本中,我使用Desive_invitable向不同的用户角色发送不同的邀请电子邮件。例如,管理员用户将收到与普通用户不同的邀请。要向用户发送不同的电子邮件,我执行了以下操作:

 @user = User.invite!(params[:user], current_user) do |u|
   u.skip_invitation = true
 end

if params[:admin_id] # admin invite
  @user.deliver_invitation
  email = NotificationMailer.admin_invite_message(@user, @venue, @from, @subject, @content)
else
  @user.deliver_invitation
  NotificationMailer.user_invite_message(@user, @from, @subject, @content)
end
这种方法提供了很大的灵活性。但随着令牌生成方式的最新变化(见下文),不再可能使用这种方法

# Generates a new random token for invitation, and stores the time
# this token is being generated
def generate_invitation_token
  raw, enc = Devise.token_generator.generate(self.class, :invitation_token)
  @raw_invitation_token = raw
  self.invitation_token = enc
end
使用resource.invitation_令牌现在会生成令牌的加密版本,并且无法从NotificationMailer获取原始令牌,因此我可以将其发送给用户

任何提示和解决办法都将不胜感激


(在Desive invitable github上)

要访问@raw\u invitation\u令牌,只需将:
attr\u reader:raw\u invitation\u令牌添加到
用户
模型中即可