我有一个控制器before_filter将非管理员用户重定向到根路径,如果他们试图更新其他人的配置文件:
before_filter :correct_user, only: [:edit, :update]
....
private
def correct_user
@user=User.find(params[:id])
redirect_to(root_path) unless current_user?(@user) || current_user.admin?
end
我在两个不同的控制器中使用这个过滤器,我想干掉代码。
当我将方法移动到application_helper.rb时,我的规范仍然通过,但我厌倦了@user
在帮助文件中分配变量。这会带来什么伤害吗?我至少应该将变量的分配委托给助手中的私有方法吗?
在这种情况下复制代码会更好,还是我的解决方案足够安全?