2016-07-03 65 views
0

我正在使用Devise-invitable向用户发送使用其电子邮件地址的邀请。当我发送和邀请时,(正确)发送的邮件之一是带有邀请链接的邮件。但是,另一封电子邮件会发送给受邀者“谢谢您注册我们。”。设计邀请:邀请用户时,正在发送2封电子邮件,一封邀请邮件和一封表示“谢谢您注册我们”的邮件

我找不到为什么会发生这种情况。

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 

守则邀请控制器:

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我用

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 [email protected]_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 

回答

0

的解决办法是检查令牌在这里:

after_create :send_welcome_email 

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

,并添加

def accept_invitation! 
    super 
    UserMailer.registration(self).deliver_now 
end 

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

1

您正在自己发送两封电子邮件。

User.invite!默认发出邀请邮件。

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

相关问题