我最近在Rails應用程序上安裝了Devise,我想知道是否有可能在其他模型或控制器中獲得當前登錄用戶的實例,如果是這樣,我該怎麼做?Rails設計:獲取當前登錄用戶的對象?
回答
設計創建表示您當前登錄的用戶的即時方法。
但是您應該注意生成的方法名稱包含您的用戶模型的類名稱。例如如果您的Devise模型被稱爲'User
',那麼當前登錄的用戶可以通過'current_user
'訪問,如果您的Devise類爲'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?
」
將它作爲參數傳遞給方法調用:)。
一個想法是使用Thread.current[:current_user] = @current_user
作爲before_filter - 但是如果您使用Thin + EM_Mysql2 + Rack :: FiberPool等部署堆棧,則需要將其設置爲Fiber.current[:current_user]
。
這些解決方案真的只是掩蓋了缺乏良好的設計邏輯。
個人我考慮粘上下文值到螺紋對象是一個 「氣味」。你承認,在最後一行,很榮幸,但我只是想強調...... – jaydel 2013-06-29 18:05:06
替換的設計輔助方法只適用於在控制器和視圖層。它們在模型層不可用(請參閱README的控制器過濾器和幫助器部分)。
Is it possible to get the currently logged in user from within a model?
。
通過Devise爲您創建的默認幫助器方法是不可能的。但是,您可以使用許多替代方法將current_user
提供給模型。 Alex Bartlow已經提出了最簡單的方法,那就是簡單地通過一個方法將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. 獲取當前登錄的Windows用戶?
- 3. pysvn:獲取當前登錄用戶名
- 4. 獲取當前登錄用戶
- 5. QT獲取當前登錄用戶ID
- 6. Sails.js + Passport.js獲取當前登錄用戶
- 7. 獲取當前登錄用戶PHP
- 8. 獲取當前登錄用戶asp.net
- 9. 當前登錄用戶的設置ID
- 10. fbjs:獲取當前的登錄用戶的用戶
- 11. 如何獲取當前Windows登錄用戶的用戶名?
- 12. Rails設計不檢測用戶登錄
- 13. 非登錄用戶 - Rails 4 - 設計
- 14. 從活動目錄獲取當前登錄用戶的列表
- 15. Rails設計登錄
- 16. 獲取當前用戶名,即在SharePoint 2010門戶中登錄
- 17. 使用C#獲取當前登錄用戶的ADS組列表
- 18. 如何使用NAnt獲取當前登錄的Windows用戶
- 19. 如何使用Wordpress Rest Api獲取當前登錄的用戶?
- 20. 獲取當前登錄的用戶ID爲Facebook應用程序
- 21. keystone.js當前登錄用戶
- 22. 獲取當前登錄的Windows 7的用戶,PHP
- 23. 如何獲取登錄到當前會話的用戶的ID?
- 24. 獲取的Joomla當前登錄的用戶拋出異常
- 25. 獲取當前登錄的FB用戶的ID
- 26. asp.net的MVC獲取當前登錄的用戶ID
- 27. 如何獲取當前登錄的用戶的ID在pyrocms?
- 28. Membership.GetUser()如何獲取當前登錄的用戶?
- 29. Grails:如何獲取有關當前登錄用戶的信息?
- 30. 如何從MSBuild獲取當前登錄的Windows用戶
斯科特說的一切都是正確的,但也(這也可能是新的)設計在這裏調用'user'和'admin'「範圍」。如果你在文檔中看到這個詞,那就是它所指的。 – Peeja 2015-03-09 20:37:00
但請求對象中的這個信息是什麼? – mehulkar 2015-05-10 02:07:09