Rails:如何避免这种重定向循环?

时间:2011-04-28 16:17:34

标签: ruby-on-rails redirect routes

我想强制用户在登录时更改密码(假设他们已将某个布尔标记设置为true)。

现在我正试图通过before_filter中名为change_password_check的{​​{1}}来做这件事。

ApplicationController

显然,问题是我得到了一个重定向循环。

那么,如果用户不在def change_password_check if current_user.change_password == true flash[:notice] = "You must be update your password before continuing" redirect_to change_password_path return false end end 路线上(或发布到before_filter),我该怎么做才change_password_check

我正在运行Rails 3。

1 个答案:

答案 0 :(得分:5)

before_filter :change_password_check, :except => :change_password

您可以仅指定和除了作为before_filter的选项。这些接受一组参数,在上面的例子中,你只有一个你想要跳过的方法,但是如果你有另一个要跳过的方法(你的更新动作),你可以这样做:

before_filter :change_password_check, :except => [:change_password, :update]

只有与之相反,所以:

before_filter :change_password_check, :only => :check_me

只有在方法为check_me时才会运行。