Ruby on Rails 中文 Wiki
Rails2_0新特性_filters的更新

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, 请访问他的博客

本条目被以下条目链接: