ruby-on-rails – 设计skip_confirmation!不工作
发布时间:2020-12-16 22:39:44 所属栏目:百科 来源:网络整理
导读:我的应用程序设置为,如果用户使用Oauth或Openid登录,则无需确认其电子邮件地址.但是,Devise仍在发送电子邮件确认.当我打电话给User.skip_confirmation!我得到一个未定义的方法错误.我的型号: class User ActiveRecord::Base devise :database_authenticata
我的应用程序设置为,如果用户使用Oauth或Openid登录,则无需确认其电子邮件地址.但是,Devise仍在发送电子邮件确认.当我打电话给User.skip_confirmation!我得到一个未定义的方法错误.我的型号:
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 我的控制器: 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 感谢任何帮助. 解决方法
您需要在创建用户对象之前跳过确认,并将其持久化到数据库.所以您的方法的用户创建部分将是这样的
user = User.new(:username => data.name,20]) user.skip_confirmation! user.save (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |