this.state.filters === this.props.filters
当我运行应用程序时,我有这样的代码,如果当前照片不是由所有者拥有,它会将用户重定向到照片路径。但是,当我运行相同的代码集但添加返回时:
unless current_user.owns_photo? @photo
redirect_to photos_path
end
会导致不规则的结果。经过身份验证的用户可以继续查看不属于他们的内容。然而,当我放弃返回它工作正常。为什么它没有与回报合作?我听说使用redirect_to时返回是一个好习惯,所以它不会再执行任何代码。
unless current_user.owns_photo? @photo
redirect_to photos_path && return
end
这是owns_photo正常工作的方法。我对这个回归问题很好奇。
答案 0 :(得分:1)
试试redirect_to photos_path and return
。使用and
代替&&
。这些运营商有不同的优先事项。
键入redirect_to photos_path && return
表示redirect_to (photos_path && return)
,而redirect_to photos_path and return
表示(redirect_to photos_path) and return
答案 1 :(得分:0)
&&
(逻辑AND
)运算符的优先级高于and
(逻辑组合)运算符。
所以,当你写下这个:redirect_to photos_path && return
时,这被解释为:redirect_to (photos_path && return)
这不是你想要的。
要解决此问题,您可以做两件事(使用&&
运算符时使用括号):
(redirect_to photos_path) && return
或者,在Rails中使用通常用于此类情况的and
运算符(参见this post):
redirect_to photos_path and return
这两个都应该按预期工作,并应解决您的问题。