Ruby on rails 在helper方法中声明实例变量
我有一个控制器before_filter,如果非管理员用户试图更新其他人的配置文件,它会将其重定向到根路径:Ruby on rails 在helper方法中声明实例变量,ruby-on-rails,Ruby On Rails,我有一个控制器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?
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\u helper.rb中时,我的规范仍然通过,但我厌倦了在helper文件中分配@user
变量。这有什么害处吗?我至少应该将变量的赋值委托给助手中的私有方法吗
在这种情况下,代码复制是否更好,或者我的解决方案足够安全吗?将正确的\u用户方法移动到应用程序控制器中,然后可以在任何控制器中使用before\u过滤器。将正确的\u用户方法移动到应用程序控制器中,然后可以在任何控制器中使用before\u过滤器