2012-03-19 10 views
18

मैं नई तैयार पुष्टि के साथ रेल 3 का उपयोग कर रहा हूं।तैयार किए गए ईमेल पते अपडेट की पुष्टि करने की आवश्यकता को कैसे छोड़ें?

मैं चाहता हूं कि उपयोगकर्ता आम तौर पर अपने ईमेल पते की पुष्टि करें। एक नया उपयोगकर्ता बनाने जब मैं के साथ पुष्टिकरण ईमेल को छोड़ सकते हैं:

user.skip_confirmation! 

लेकिन, कभी कभी मैं स्वयं एक उपयोगकर्ता की ओर से एक ई-मेल को बदलने की जरूरत। और यह ईमेल बदलते समय काम नहीं करता है। उदाहरण:

@user = User.find_by_email('[email protected]') 
@user.email = '[email protected]' 
@user.skip_confirmation! 
@user.save! 

यह अभी भी उपयोगकर्ता को ईमेल की पुष्टि करने की आवश्यकता है। वह ईमेल अपडेट नहीं किया जा रहा है। और तैयार एक ईमेल भेज रहा है।

कोई भी विचार? धन्यवाद

उत्तर

57

अपडेट के लिए आप update_attributes साथ छड़ी कर सकते हैं, या सिर्फ एक सादे save और skip_reconfirmation! (ध्यान दें reconfirmation में 'फिर से')।

@user.skip_reconfirmation! 

respond_to do |format| 
    if @user.update_attributes(params[:user]) 
    ... 
end 
+0

धन्यवाद! मुझे इसकी ही खोज थी। –

+0

टिप के लिए धन्यवाद! –

+0

बहुत बहुत धन्यवाद :) यह मेरे लिए काम किया है :) –

11

Devise.reconfirmable या User.reconfirmable (या जो भी आपका मॉडल है) को झूठी करने की कोशिश करें। आप इस लाइन पर config/initializers/devise.rb पर सेट कर सकते हैं:

# If true, requires any email changes to be confirmed (exctly the same way as 
# initial account confirmation) to be applied. Requires additional unconfirmed_email 
# db field (see migrations). Until confirmed new email is stored in 
# unconfirmed email column, and copied to email column on successful confirmation. 
config.reconfirmable = true 

तुम भी सक्रिय रिकॉर्ड के update_column विधि है, जो कॉलबैक या सत्यापन चलने के बिना एक क्षेत्र की बचत होती है उपयोग कर सकते हैं।

+0

मैं reconfirmable चाहते हैं, मुझे क्या करना चाहते हैं reconfirmable छोड़ जब किसी मौजूदा उपयोगकर्ता रिकॉर्ड के लिए ईमेल को अद्यतन करने की क्षमता है है: यह अद्यतन पर ईमेल reconfirmation को निष्क्रिय कर देगा – AnApprentice

+0

मैंने 'update_column' विधि का उपयोग करने के लिए उत्तर अपडेट किया है। –

1

तुम सिर्फ ईमेल सूचना छोड़ना चाहते हैं, तो ऐसा करते हैं:

@user.skip_confirmation_notification! 
@user.save 
5

आप अपने मॉडल # models/users.rb में कोड इस तरह का उपयोग कर सकते हैं।

def postpone_email_change? 
    false 
end 

या अपने नियंत्रक में

def update 
    user.email = params[:user][:email] 
    user.skip_confirmation_notification! 

    if user.save 
    user.confirm 
    end 
end 
+0

जो वास्तव में काम करता है! – ilgam

संबंधित मुद्दे