[英]Devise skip_confirmation! fails to avoid to send the confirmation instructions
My app is set up so that if a user signs in with Oauth or Openid, they don't have to confirm their email address. 我的应用程序已设置好,如果用户使用Oauth或Openid登录,则无需确认其电子邮件地址。 However, Devise is still sending email confirmations.
但是,Devise仍在发送电子邮件确认。 When I call User.skip_confirmation!
当我调用User.skip_confirmation时! I get an undefined method error.
我得到一个未定义的方法错误。 My model:
我的模特:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable,
:trackable, :validatable, :confirmable, :lockable, :token_authenticatable, :omniauthable
attr_accessible :username, :email, :password, :password_confirmation, :remember_me
validates_presence_of :username
validates_uniqueness_of :username, :case_sensitive => false
def self.find_for_facebook_oauth(access_token, signed_in_resource=nil)
data = access_token.extra.raw_info
if user = User.where(:email => data.email).first
user
else
#User.skip_confirmation!
User.create!(:username => data.name, :email => data.email, :password => Devise.friendly_token[0,20])
end
end
def skip_confirmation!
self.confirmed_at = Time.now
end
end
My Controller: 我的控制器:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def facebook
@user = User.find_for_facebook_oauth(request.env["omniauth.auth"], current_user)
@user.skip_confirmation!
if @user.persisted?
sign_in @user
@fname = @user.username
redirect_to root_path, :flash => { :success => "Welcome #{@fname}!" }
else
session["devise.facebook_data"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
end
thanks for any help. 谢谢你的帮助。
You need to skip confirmation before you create the User objects and its persisted to the database. 在创建User对象并将其持久保存到数据库之前,您需要跳过确认。 So the user creation part of your method would look like
因此,方法的用户创建部分看起来像
user = User.new(:username => data.name, :email => data.email, :password => Devise.friendly_token[0,20]) user.skip_confirmation! user.save
If you're updating a user record, make sure to use skip_reconfirmation!
如果您要更新用户记录,请确保使用
skip_reconfirmation!
(mind the re ) (介意重新 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.