2016-07-03 5 views
0

私は自分のメールアドレスを使用して、ユーザーに招待状を送信するためにDevise-invitableを使用しています「ご登録いただき、ありがとうございます」。私が送って招待すると、(正しく)送られたメールの1つは、招待状のリンクを持つものです。ただし、招待客に「ありがとうございます。」というメールが送信されます。工夫-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 

招待コントローラでコード:

after_create :send_welcome_email 

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

をして追加します。私が使用

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

ソリューションは、ここでトークンをチェックするためにだったUser.rbで

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 

コード

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

わからないこれがベストですが、それは私の問題を解決します。

1

あなたは両方の電子メールを自分で送信しています。

User.invite!は、デフォルトで招待メールを送信します。

あなたはuser.rbafter_create :send_welcome_mailを削除する必要があります。それが「歓迎メール」を送り出すものです。

関連する問題