我使用Devise-invitable向使用他们的电子邮件地址的用户发送邀请。当我发送和邀请,其中一封邮件,即(正确)发送是一个与邀请链接。然而,另一封电子邮件被发送,它告诉受邀者“,谢谢你向我们注册.”。
我不知道为什么会发生这种事。
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
endUser.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 !@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发布于 2016-08-20 19:11:16
这两封邮件都是你自己发的。
默认情况下,User.invite!会发送一封邀请邮件。
您需要删除after_create :send_welcome_mail中的user.rb。这就是发送“欢迎电子邮件”的原因。
发布于 2016-07-04 19:20:28
我使用的解决方案是在这里检查令牌:
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不知道这是不是最好的,但它解决了我的问题。
https://stackoverflow.com/questions/38167953
复制相似问题