1

管理者以外のユーザーが他のユーザーのプロファイルを更新しようとした場合に、ルート パスにリダイレクトするコントローラー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

このフィルターを 2 つの異なるコントローラーで使用しており、コードをDRYしたいと考えています。

メソッドをapplication_helper.rbに移動しても仕様はパスし@userますが、ヘルパー ファイルで変数を割り当てるのにうんざりしています。これにより害が生じる可能性はありますか?少なくとも変数の割り当てをヘルパーのプライベート メソッドに委任する必要がありますか?

この場合、コードを複製した方がよいでしょうか?それとも、私のソリューションは十分に安全でしょうか?

4

1 に答える 1

1

correct_user メソッドをアプリケーション コントローラーに移動すると、before_filter を使用して任意のコントローラーで使用できます。

于 2012-05-24T05:32:54.820 に答える