要防止在rails应用程序中的某个控制器中执行操作,除非经过身份验证,您可以使用
before_filter :validate_user, :only => [:create, :update]
除非授权用户尝试创建和更新,否则这将阻止执行创建和更新。如果创建和更新操作位于rails引擎内的控制器中,则不起作用。
如何有条件地阻止在rails引擎内的控制器上执行操作?
答案 0 :(得分:0)
如果有问题的validate_user
方法返回false
,则暂停过滤器链并且不会执行操作。
典型的模式如下:
def validate_user
unless (...valid_conditions...)
flash[:error] = "You're not logged in."
redirect_to(login_path)
return false
end
end
您可以在暂停过滤器链之前执行任何操作,但最好是先redirect
或render
。