【发布时间】:2013-07-22 21:02:37
【问题描述】:
我继承了一些 Rails 代码,用于检查用户是否定义在由前过滤器调用的方法中:
before_filter :get_user
def get_user
@user = User.find(params[:id])
if !@user
return false
end
end
现在,问题是这不起作用 :) 如果找不到用户,我们不会从控制器返回,我们只是从 get_user() 方法返回,然后在 show() 中继续执行或将@user 设置为nil 的update() 方法。
如果@user 为nil,我的简单解决方案是添加到get_user() 的重定向:
def get_user
@user = User.find(params[:id])
if !@user
redirect_back
return false
end
end
现在,我的测试通过了,世界似乎一切正常。但是......我不明白发生了什么。有人能解释一下为什么get_user() 中的返回并没有完全停止控制器中的执行,而是让我们脱离get_user() 并导致我们陷入最初调用的控制器方法?
谢谢!
【问题讨论】:
标签: ruby-on-rails control-flow