Controller 里刚刚 被更新 的 filters 功能 也许会为您现存的代码带来一点变动。 现在,false 输出将不再停止当前运行的进程,真正停止进程的主角换为了 rendering 或 redirecting。
如果您深入的去理解,通过在 filter 里的 render/redirect 来停止一个进程更加符合逻辑,因为它们在每个进程里只能被使用一次,这样更加能够指明这个进程将不再需要调用其他资源。
那么之前,您也许会拥有一个类似下面的 filter :
def must_be_logged_in
if(not user_logged_in?)
redirect_to login_url
return false
end
end
您现在可以通过 rendering 或 redirecting 来取代输出 false:
def must_be_logged_in redirect_to login_url if not user_logged_in? end
头一次看到的时候我以为这个方法可能会捣乱我们原先设置的 filter,但是在对自己的代码进行总结后我发现任何时候输出 false 的时候早已经进行了 render 或者 redirect。不过还不太确定每个人都是如此 …
感谢 Yudi 提供本系列文档
原文作者是 Ryan Daigle, 请访问他的博客