2
是否可以使用Ruby on Rails的before_filter
方法檢查多個事件之一是否爲真?具體來說,我使用的是Devise,我定義了一個用戶和一個管理員,我想確保訪問特定控制器的人是其中一個。我已經在文檔和搜索結果中尋找答案,並且沒有任何運氣。使用before_filter檢查管理員或用戶是否登錄
謝謝,這裏是我的版本(如果它幫助):
- 的Ruby 1.9.3
- 的Rails 3.2.6
- 設計2.2.3
是否可以使用Ruby on Rails的before_filter
方法檢查多個事件之一是否爲真?具體來說,我使用的是Devise,我定義了一個用戶和一個管理員,我想確保訪問特定控制器的人是其中一個。我已經在文檔和搜索結果中尋找答案,並且沒有任何運氣。使用before_filter檢查管理員或用戶是否登錄
謝謝,這裏是我的版本(如果它幫助):
這是可能的。我很猶豫是否真的把這個作爲答案,因爲它沒有比這更簡單。我假設您有一個admin?
方法,根據用戶的角色返回true或false。
before_filter :check_if_admin
protected
def check_if_admin
if signed_in?
raise 'Only admins allowed!' unless current_user.admin?
else
# or you can use the authenticate_user! devise provides to only allow signed_in users
raise 'Please sign in!'
end
end
您可以將def check_if_admin添加到ApplicationHelper或可能添加一個「AuthenticationHelper」,並將控制器包含在控制器中=) – Abdo 2013-02-26 14:31:40