我想强制用户在登录时更改密码(假设他们已将某个布尔标记设置为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。
答案 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时才会运行。