我正在关注railscast http://railscasts.com/episodes/61-sending-email-revised,其中声明我应该添加
UserMailer.signup_confirmation(@user).deliver
到
def create
@user = User.new(params[:user])
if @user.save
redirect_to @user, notice: "Signed up successfully."
else
render :new
end
end
在行if @user.save
之后 ......但是如果我使用设计怎么办?我是否需要将UserMailer.signup_confirmation(@user).deliver
添加到Devise gem隐藏了相当于users_controller的另一个地方?
答案 0 :(得分:2)
因为,您正在关注Sending Email
的RailsCasts剧集,那么在这种情况下,您需要做的就是更新UsersController#create
,如下所示:
def create
@user = User.new(params[:user])
if @user.save
UserMailer.signup_confirmation(@user).deliver ## Add this
redirect_to @user, notice: "Signed up successfully."
else
render :new
end
end
选项#1发送欢迎确认邮件
您可以在此处执行的操作,覆盖ApplicationController中的after_sign_in_path_for
方法,如下所示:
class ApplicationController < ActionController::Base
## ...
protected
def after_sign_in_path_for(resource)
UserMailer.signup_confirmation(@user).deliver ## Add this
your_path(resource) ## Replace your_path with the path name where you want to send the user after sign in
end
end
选项#2发送带有确认令牌的欢迎确认邮件
为此,您需要使用Devise内置Confirmable
模块。
可确认:发送带有确认说明的电子邮件并进行验证 登录时是否已确认帐户。