Ruby on rails 在helper方法中声明实例变量

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,如果非管理员用户试图更新其他人的配置文件,它会将其重定向到根路径:

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过滤器