2013-01-19 11 views
9

मैं जिसमें मैं चाहते हैं उपयोगकर्ताओं को स्वचालित अपने कंप्यूटर पर याद किया जाना एक एप्लिकेशन बनाने हूँ में याद रखने के लिए।कैसे स्वचालित रूप से एक "मुझे याद रखें" चेक बॉक्स के बिना उपयोगकर्ता वसीयत

मैंने पढ़ा है कि मुझे @user.remember_me! पर कॉल करना पड़ सकता है, लेकिन यह सुनिश्चित नहीं है कि डेविस नियंत्रक छिपाए जाने के बाद इसे कहां कॉल करना है।

मैं डिफ़ॉल्ट रूप से चिह्नित चेकबॉक्स के साथ साइन_इन फॉर्म में एक छुपा चेकबॉक्स फ़ील्ड जोड़ने पर विचार कर रहा था, लेकिन मुझे उम्मीद थी कि मैं इसे नियंत्रकों के पक्ष में कर सकता हूं।

कोई विचार यह कैसे किया जा सकता है?

धन्यवाद!

+0

यह मदद करनी चाहिए: https://groups.google.com/forum/?fromgroups=#!topic/plataformatec-devise/fGHzF1imqJ0 –

उत्तर

15

मुझे लगता है कि आपके devise नियंत्रक को अनुकूलित करना यहां जाने का तरीका है।

लक्ष्य: स्वचालित रूप से सभी को याद रखें।

सबसे पहले, एक तैयार सत्र नियंत्रक बनाएं। के रेल मार्गों इसके बारे में बता दें

config/routes.rb

devise_for :users, :controllers => {:sessions => 'sessions'} 

एप्लिकेशन/नियंत्रक/sessions_controller.rb

class SessionsController < Devise::SessionsController 

    def create 
    params[:user].merge!(remember_me: 1) 
    super 
    end 

end 

इस तरह, उपयोगकर्ता के याद मुझे हमेशा रहेंगे सच करने के लिए सेट करें। वाह!

फिर आप यादृच्छिक_मेक चेकबॉक्स को प्रदर्शित न करने के लिए लॉगिन फॉर्म को संपादित करना चाहते हैं।

इसके अलावा, दूर कुछ करने के लिए प्रारंभकर्ता में बदल:

#config.remember_for = 2.weeks 
config.remember_for = 1.year 
+0

समय लेने के लिए धन्यवाद! :) – Karan

+0

मैंने अभी इसे लागू किया है। एक आकर्षण की तरह काम किया,) – Karan

+0

एचएम, यह मेरे लिए काम नहीं करता, मैं लॉग को देखो और न remember_created_at क्षेत्र की है यह देखने के मैं भी मेरे ऐप पर हर बार के बाद मैं बंद ब्राउज़र लॉगिन करना :( –

0

यह एक सतत विकल्प होना चाहिए ताकि आप इसे उपयोगकर्ता के लिए हुक बनाने के बाद कर सकें क्योंकि आप इसे स्थायी विकल्प बनना चाहते हैं।

+0

मैं सही, ग्रहण करेंगे कि यह उपयोगकर्ता मॉडल में हो जाएगा? – Karan

+0

हालांकि यह नहीं होगा कि mem_me केवल एक बार हो ... जब रिकॉर्ड बनाया जाता है? क्योंकि remember_me शायद 2 सप्ताह में समाप्त हो जाएगा, इसका 2 सप्ताह के बाद कोई प्रभाव नहीं पड़ेगा ... – Karan

12

आप वसीयत में इस पुल अनुरोध को पढ़ें: https://github.com/plataformatec/devise/issues/1513, डिफ़ॉल्ट रूप से याद करने के लिए मंजूर की जिस तरह से बस अपने उपयोगकर्ता वर्ग पर परिभाषित करने के लिए प्रकट होता है:

class User 
    def remember_me 
    true 
    end 
end 
संबंधित मुद्दे