2013-02-24 179 views
2

是否可以使用Ruby on Rails的before_filter方法檢查多個事件之一是否爲真?具體來說,我使用的是Devise,我定義了一個用戶和一個管理員,我想確保訪問特定控制器的人是其中一個。我已經在文檔和搜索結果中尋找答案,並且沒有任何運氣。使用before_filter檢查管理員或用戶是否登錄

謝謝,這裏是我的版本(如果它幫助):

  • 的Ruby 1.9.3
  • 的Rails 3.2.6
  • 設計2.2.3

回答

4

這是可能的。我很猶豫是否真的把這個作爲答案,因爲它沒有比這更簡單。我假設您有一個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 
+0

您可以將def check_if_admin添加到ApplicationHelper或可能添加一個「AuthenticationHelper」,並將控制器包含在控制器中=) – Abdo 2013-02-26 14:31:40

相關問題