用户未登录时如何将用户重定向到登录页面

当用户登录时,我们将其用户ID存储在会话中。

session[:user_id] = user.id 

现在在我们网站的所有其他链接上,如果session[:user_id] == nil ,我们希望用户重定向

我认为它的方式是它将在控制器的每个方法中完成。

 def show_customers if session[:user_id] == nil redirect_to (:controller => "authentication", :action => "login") #code related to show_customers goes here end 

但这需要在每个控制器的每个方法中完成。

是否有更理智的Rails’y方式来做到这一点?

使用before_filter 。

使用before_filtervalidation会话是否有效,如果您不想将它放在每个控制器中,请将它放在application_controller中(因为所有控制器都从它inheritance)。 您还可以通过覆盖控制器中的方法轻松排除/限制其所要求的操作。