这是我的users_controller
方法。如果用户未激活,则应重定向。
def show
@user = User.find(params[:id])
redirect_to root_url and return unless @user.activated?
end
在这里,我不明白方法中是否需要 return,因为它会在执行 redirect_to 之前自动发生。我见过很多例子,但大多数都有更多的 if 语句,所以 return 会跳过这些检查。这里,有必要吗?
return 语句在这里没有任何意义。你可以只写
def show
@user = User.find(params[:id])
redirect_to(root_url) unless @user.activated?
end
return 语句有时被用作避免双重渲染问题的技巧,特别是在显式的情况下render
。举个例子:
def show
@user = User.find(params[:id])
redirect_to(some_url) unless @user.activated?
redirect_to(other_url) unless @user.other?
render action: "hello"
end
如果此处不使用 return,则当方法返回时,您有可能定义渲染行为两次甚至三次。
一般来说,带有返回的多重渲染是编码气味的标志。您通常可以重构该操作,以便在任何操作设置渲染行为时,在旨在停止执行链的操作之前正确使用该操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)