在application_controller.rb我有以下:導軌skip_before_filter方法中(其他before_filters已經運行之後)
before_filter :get_events
before_filter :get_sitemap
def login_required
return true if session[:user]
# If we get to this point, I want to avoid running get_events and get_sitemap
flash[:warning] = 'Please login to continue'
redirect_to login_users_url
return false
end
而在其他控制器我有例如:
before_filter :login_required, :except => [:show]
所以基本上我有運行方法訪問數據庫的所有頁面,除了我不希望它發生在用戶需要登錄時(即,從通常需要get_events和get_sitemap的頁面重定向)。
我認識到這樣做的一種方法是,在設置任何其他before_filters之前,在所有控制器上運行login_required作爲before_filter,然後排除某些控制器模型,但我想知道是否有辦法做到這一點,而無需改變我的所有控制器。
究竟:only => [:this_time]選項是做什麼的? – Ameen
:this_time不是一個真正的方法;我只是把它寫成'僞代碼'。您可以使用控制器操作的方法名稱來跳過登錄...... so [:create,:update ...]等等等等。 – JakeTheSnake