[ruby-on-rails] Rails Devise:獲取當前登錄用戶的對象?



Answers

Devise輔助方法僅在控制器和視圖層可用。 它們在模型層不可用(請參閱README Controller過濾器和幫助程序部分)。

  • 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>是具有Devise身份驗證功能的模型的名稱(即,通過rails g devise <modelname> )。 例如,如果您的模型是User ,那麼您將使用current_user 。 如果您的模型是Elmo ,那麼您將使用current_elmo

Question

我最近在rails應用程序上安裝了Devise,我想知道是否有可能在其他任何一個模型或控制器中獲取當前登錄用戶的實例,如果是這樣,我該怎麼做?




簡單的方法是:

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"



Related