2011-12-29 22 views
10

Uygulamam, bir kullanıcı Oauth veya Openid ile oturum açtığında, e-posta adresini onaylamaları gerekmeyecek şekilde ayarlanmıştır. Ancak, Devise hala e-posta onayları gönderiyor. User.skip_confirmation'u aradığımda! Tanımlanmamış bir yöntem hatası alıyorum. Benim modelim:Devise skip_confirmation! çalışmaz

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 Denetleyici: Herhangi bir yardım için

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 

teşekkürler.

+0

( yeniden mind) skip_reconfirmation! kullanmak olun: confirmable sen "skip_confirmation!" mesajına gerçekten gerek yok (http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Confirmable#skip_confirmation%21-instance_method) Yığın izini gönderir misiniz? Eksik olan "skip_confirmation!" Yönteminden şüphe duyuyorum. – Tigraine

cevap

35

Kullanıcı nesnelerini oluşturmadan ve veritabanına devam etmeden önce onayı atlamanız gerekir. Eğer bir kullanıcı kaydını güncelliyorsanız Yani yöntemin kullanıcı oluşturma bölümü

 
user = User.new(:username => data.name, :email => data.email, :password => Devise.friendly_token[0,20]) 
user.skip_confirmation! 
user.save 
+0

user.create'ı user.create olarak değiştirdikten sonra çalıştı. Teşekkürler. –

+0

Aynı zamanda son kullanıcı olarak 'kullanıcı' eklemeniz gerektiğini düşünüyorum, bu yüzden – kambi

+0

Merhaba Rishav işlevinin geri dönüş değeri olarak kalacağım, user.rb'de tam olarak aynı koda sahibim, hala benim app onay e-postalarını gönderdiğimde Facebook'ta yetkilendirin. Herhangi bir fikri neden user.skip_confirmation! bir şey yapmıyor mu? –

7

gibi görünecektir, emin zaten kullandığınız yana