在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