首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计:邀请用户时,将发送两封电子邮件、一封邀请函和一封写着“谢谢您在我们这里注册”的邮件。

设计:邀请用户时,将发送两封电子邮件、一封邀请函和一封写着“谢谢您在我们这里注册”的邮件。
EN

Stack Overflow用户
提问于 2016-07-03 08:06:07
回答 2查看 741关注 0票数 0

我使用Devise-invitable向使用他们的电子邮件地址的用户发送邀请。当我发送和邀请,其中一封邮件,即(正确)发送是一个与邀请链接。然而,另一封电子邮件被发送,它告诉受邀者“,谢谢你向我们注册.”。

我不知道为什么会发生这种事。

代码语言:javascript
复制
Ruby version : 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
Rails version : 4.2.4
devise version : 3.5.10
devise_invitable version : 1.6.0

邀请控制器中的代码:

代码语言:javascript
复制
class InvitationsController < Devise::InvitationsController
 def create
  params[:user][:email].each do |email|
    User.invite!({:email => email}, current_user) #If I comment out this line, both emails are not sent
  end
  redirect_to root_path
 end
end

User.rb中的代码

代码语言:javascript
复制
class User < ActiveRecord::Base
# after_create :send_welcome_email
# Include default devise modules. Others available are:  
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :invitable, :omniauthable, :database_authenticatable,   :registerable,
     :recoverable, :rememberable, :trackable

attr_accessor :user_profile_phone, :user_profile_city

# Relationships
has_many :identities
has_many :orders
belongs_to :role, :dependent => :destroy
belongs_to :userdatum, :dependent => :destroy
belongs_to :userprofile, :dependent => :destroy
has_many :comments
has_many :deliveries
has_many :conversations, :dependent => :destroy

# Filters
before_save :assign_role  
after_create :send_welcome_mail

def send_welcome_mail
  UserMailer.registration(self).deliver_now
end

def assign_role
  self.role = Role.find_by name: "User" if self.role.nil?
end

def facebook
  identities.where( :provider => "facebook" ).first
end

def facebook_client
  @facebook_client ||= Facebook.client( access_token: facebook.accesstoken )
end

def google_oauth2
  identities.where( :provider => "google_oauth2" ).first
end

def google_oauth2_client
  if !@google_oauth2_client
    @google_oauth2_client = Google::APIClient.new(:application_name => 'Test', :application_version => "1.0.0" )
    @google_oauth2_client.authorization.update_token!({:access_token => google_oauth2.accesstoken, :refresh_token => google_oauth2.refreshtoken})
  end
  @google_oauth2_client
end

def admin?
  self.role.name == "Admin"
end

def sytlist?
  self.role.name == "Stylist"
end

def user?
  self.role.name == "User"
end
end
EN

回答 2

Stack Overflow用户

发布于 2016-08-20 19:11:16

这两封邮件都是你自己发的。

默认情况下,User.invite!会发送一封邀请邮件。

您需要删除after_create :send_welcome_mail中的user.rb。这就是发送“欢迎电子邮件”的原因。

票数 1
EN

Stack Overflow用户

发布于 2016-07-04 19:20:28

我使用的解决方案是在这里检查令牌:

代码语言:javascript
复制
after_create :send_welcome_email

def send_welcome_mail
    if self.invitation_token.nil?
      UserMailer.registration(self).deliver_now
    end
end

再加上

代码语言:javascript
复制
def accept_invitation!
    super
    UserMailer.registration(self).deliver_now
end

不知道这是不是最好的,但它解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38167953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档