没有为控制器Rails调用Before_Action 5

时间:2018-02-21 05:36:59

标签: ruby-on-rails

我目前正在尝试重定向user.account_delinquent = true的用户帐户。问题是,即使帮助方法处于活动状态,该帐户仍然可以访问测试控制器。

我的控制器已将ApplicationHelper包含在before_action :account_delinquency中,但该方法拒绝触发。

如果account_delinquency,如何正确设置current_user.account_delinquent == true辅助方法以启动重定向?

我的代码如下:

magazines_controller.rb

class MagazinesController < ApplicationController
  include ApplicationHelper
  before_action :account_delinquency

  def index
    @magazines = Magazine.all
  end
end

application_helper.rb

def account_delinquency
  if user_signed_in? || employer_signed_in?
    redirect_to update_account_index_path, alert: 'We were unable to charge your account' if current_user.account_delinquent == true || current_employer.account_delinquent == true
  end
end

2 个答案:

答案 0 :(得分:1)

尝试在account_delinquency中定义ApplicationController,而不是ApplicationHelper。我总是在控制器中执行操作,而不是在帮助器中。

答案 1 :(得分:0)

我设法通过将user_session同步到用户变量本身来获得帮助方法。因为,此方法仅用于登录成员。

application_helper.rb

containedNodeSet

controller.rb

def account_delinquency
    @current_user ||= User.find_by_session(session[:user_id])
    redirect_to update_account_index_path, alert: 'We were unable to charge your account' if @current_user.account_delinquent
  end