Ruby - 自动运行帮助方法

Eva*_*ard 4 ruby ruby-on-rails ruby-on-rails-4

我有一个登录页面,保存会话以允许用户导航后续页面.如果您未登录,我想将您重定向到登录页面.我有一个SessionsHelper方法来检查用户是否已登录,如果没有,将它们重定向回登录页面,但我不想在每个控制器操作中调用它.有没有办法在全球范围内轻松运行此方法?

Ser*_*sev 5

传统上,这是通过before_action过滤器完成的.这些方面的东西:

class ApplicationController
  before_action :require_current_user

  def require_current_user
    redirect_to login_path unless current_user
  end
end

class SessionsController < ApplicationController
  # do not cause endless redirect loop
  skip_before_action :require_current_user, only: [:new, :create]
end
Run Code Online (Sandbox Code Playgroud)

此外,帮助程序用于简化视图(货币格式,样式等).它们不能用于此类功能(在这种情况下是会话管理).