मैं हाल ही में एक रेल आवेदन पर वसीयत स्थापित किया है, और अगर यह संभव हो सकता है की वर्तमान में अन्य मॉडलों या नियंत्रकों के किसी एक में उपयोगकर्ता के प्रवेश एक उदाहरण पाने के लिए मैं सोच रहा हूँ, और यदि हां, तो मुझे लगता है कि कैसे करते हो ?रेल डिवाइसेस: वर्तमान में लॉग इन उपयोगकर्ता का ऑब्जेक्ट प्राप्त करें?
उत्तर
वसीयत मक्खी है कि आपके वर्तमान में लॉग उपयोगकर्ता प्रतिनिधित्व करते हैं पर सुविधा तरीकों पैदा करता है।
हालांकि आपको ध्यान रखना चाहिए कि जेनरेट किए गए विधि नाम में आपके उपयोगकर्ता मॉडल का वर्ग नाम शामिल है। जैसे यदि आपके डेविस मॉडल को 'User
' कहा जाता है तो वर्तमान में लॉग इन उपयोगकर्ता को 'current_user
' के साथ एक्सेस किया जा सकता है, और यदि आपकी डेविस क्लास 'Admin
' है तो लॉग इन व्यवस्थापक उपयोगकर्ता को 'current_admin
' से एक्सेस किया जा सकता है।
इसी तरह के सम्मेलनों के साथ बनाई गई कई अन्य विधियां हैं, उदाहरण के लिए 'user_signed_in?
' या फिर 'admin_signed_in?
', जो वास्तव में अच्छे हैं। तो आप हो सकता है
इन विधियों नियंत्रकों और विचारों में उपलब्ध हैं एक दृश्य में निम्नलिखित:
<% if user_signed_in? %>
<div>Signed in as... <%= current_user.email %></div>
<% end %>
अंत में, आप दो का उपयोग कर रहे या एक से अधिक अपने अनुप्रयोग में मॉडल (जैसे उपयोगकर्ता और व्यवस्थापक) वसीयत है, आप जांच करने के लिए 'anybody_signed_in?
की सुविधा के विधि का उपयोग कर सकते हैं अगर उपयोगकर्ता के उन प्रकार के दोनों प्रवेश किया है:
<% if anybody_signed_in? %>
<h2>Special offers</h2>
<p>All registered users will receive free monkeys!</p>
<% end %>
अद्यतन:
वसीयत संस्करण 1.2.0 के बाद से, 'anybody_signed_in?
' पदावनत किया गया है और 'signed_in?
'
विधि कॉल :) के लिए एक पैरामीटर के रूप में यह दर्रा में।
एक विचार एक before_filter रूप Thread.current[:current_user] = @current_user
उपयोग करने के लिए है - लेकिन आप पतला + EM_Mysql2 + तरह एक तैनाती ढेर उपयोग कर रहे हैं रैक :: FiberPool, आप Fiber.current[:current_user]
है कि सेट करना होगा।
उन समाधान वास्तव में सिर्फ अच्छे डिजाइन तर्क की कमी के लिए ऊपर कवर कर रहे हैं।
व्यक्तिगत तौर पर मैं धागा ऑबजेक्ट पर प्रासंगिक मूल्यों चिपके हुए एक "गंध" मानते हैं। आप स्वीकार करते हैं कि आखिरी पंक्ति में, कुडोस, लेकिन मैं बस उस पर जोर देना चाहता हूं ... – jaydel
द्वारा बदल दिया वसीयत सहायक तरीकों नियंत्रक और दृश्य परतों में ही उपलब्ध हैं। वे मॉडल परत पर उपलब्ध नहीं हैं (README के नियंत्रक फ़िल्टर और सहायक अनुभाग देखें)।
Is it possible to get the currently logged in user from within a model?
।
डेविस आपके लिए बनाता है कि डिफ़ॉल्ट सहायक तरीकों के माध्यम से यह संभव नहीं है। हालांकि, मॉडल के लिए current_user
प्रदान करने के लिए आप कई वैकल्पिक विधियों का उपयोग कर सकते हैं। एलेक्स बार्टलो द्वारा सबसे आसान तरीका सुझाया गया है, और यह आपके मॉडल के लिए विधि के माध्यम से current_user
को पास करना है।
Is it possible to get the currently logged in user from within a controllers?
हाँ, यह संभव है। current_<modelname>
का उपयोग करें, जहां <modelname>
मॉडल का नाम है जिसमें डेविस प्रमाणीकरण क्षमताएं हैं (यानी, rails g devise <modelname>
के माध्यम से)।यदि, उदाहरण के लिए, आपका मॉडल User
है, तो आप current_user
का उपयोग करेंगे। यदि आपका मॉडल Elmo
है, तो आप current_elmo
का उपयोग करेंगे।
सरल विधि है:
if @suit.user == current_user
उदाहरण:
= link_to "Back", root_path, class: "btn btn-default"
-if @suit.user == current_user
= link_to "Edit", edit_suit_path, class: "btn btn-default"
= link_to "Delete", suit_path, method: :delete, data: {confirm: "Are you sure?" }, class: "btn btn-default"
- 1. वर्तमान लॉग इन उपयोगकर्ता
- 2. जावा वर्तमान मशीन का नाम और उपयोगकर्ता में लॉग इन?
- 3. उपयोगकर्ता की आईडी में लॉग इन करें
- 4. Django में वर्तमान में उपयोगकर्ता के उपयोगकर्ता आईडी में लॉग इन कैसे करें?
- 5. मैकॉक्स कैसे प्राप्त करें लॉग-इन उपयोगकर्ता नाम उद्देश्य-सी
- 6. वर्तमान में लॉग इन किए गए उपयोगकर्ता के लिए भूमिकाओं की एक सूची कैसे प्राप्त करें
- 7. grails में लॉग इन किए गए वर्तमान उपयोगकर्ता की आईडी कैसे प्राप्त करें?
- 8. जेबॉस एएस 7 सुरक्षा: वर्तमान में लॉग इन उपयोगकर्ता नाम कैसे प्राप्त करें?
- 9. वर्तमान में लॉग इन उपयोगकर्ता विवरण कैसे प्राप्त करें Zend framework
- 10. रेल उपयोगकर्ता वर्तमान उपयोगकर्ता
- 11. रेल लॉग इन सत्र रीसेट करें
- 12. वर्तमान उपयोगकर्ता संदर्भ प्राप्त करें
- 13. उपयोगकर्ता विवरण में लॉग इन किया गया
- 14. एमवीसी 3 + उपयोगकर्ता के उपयोगकर्ता नाम पर वर्तमान लॉग इन कैसे करें
- 15. रेल में उपयोगकर्ता घटनाओं का लॉग रखें
- 16. Symfony2 में वर्तमान लॉग इन की तुलना में किसी अन्य उपयोगकर्ता के लिए एसीएल प्राप्त करना?
- 17. मैं .NET में Windows सेवा से वर्तमान में लॉग इन उपयोगकर्ता नाम कैसे प्राप्त करूं?
- 18. मैं एक्सेस वीबीए में वर्तमान में लॉग-इन विंडोज उपयोगकर्ता कैसे प्राप्त कर सकता हूं?
- 19. वर्तमान लॉग इन उपयोगकर्ता के लिए टीमसिटी प्रॉपर्टी
- 20. उपयोगकर्ता विवरण प्राप्त करें वसंत सुरक्षा 3.1 में खोपड़ी वापस आती है। वर्तमान में लॉग इन उपयोगकर्ता का पासवर्ड कैसे प्राप्त करें?
- 21. वर्डप्रेस में वर्तमान में उपयोगकर्ता की भूमिका में लॉग इन कैसे करें?
- 22. रेल, activerecord, वर्तमान कनेक्शन विनिर्देश प्राप्त करें
- 23. रेल: एप्लिकेशन कंट्रोलर में, लॉगिन लॉग इन करें, लॉगिन
- 24. django ट्रेसबैक त्रुटि में django लॉग इन उपयोगकर्ता शामिल करें
- 25. डेस्कटॉप से जुड़े Windows उपयोगकर्ता नाम में लॉग इन करें
- 26. प्रमाणीकरण प्राप्त करना एडी उपयोगकर्ता ऑब्जेक्ट एएसपीनेट
- 27. Magento में वर्तमान उपयोगकर्ता?
- 28. शेयरपॉइंट वर्तमान उपयोगकर्ता खाता नाम प्राप्त करें?
- 29. मैं कैसे मिलता है की वर्तमान में उपयोगकर्ता के लॉग इन ई प्रदर्शन नाम
- 30. Outlook 2007 में वर्तमान उपयोगकर्ता का ईमेल पता प्राप्त करें
सबकुछ स्कॉट कहता है सही है, लेकिन यह भी (और यह भी नया हो सकता है) डेविस कॉल 'यूजर' और 'एडमिन' यहां कॉल करता है " स्कोप "। यदि आप दस्तावेज़ में उस शब्द को देखते हैं, तो यही वह बात है जिसका संदर्भ है। – Peeja
लेकिन अनुरोध ऑब्जेक्ट में यह जानकारी कहां है? – mehulkar