我有一个名为HomeController
的控制器,具有index
和show
操作。我想检查用户订阅是否已经结束,并向他显示一条消息并重定向到HomeController#index
。
目前我正在做下面的
class HomeController < ApplicationController
before_action :check_if_trial_expired, only: [:index]
before_action :redirect_if_trial_expired, only: [:show]
protected
def check_if_trial_expired
@trial_expired = current_user.trial_expired?
end
def redirect_if_trial_expired
redirect_to home_path if current_user.trial_expired?
end
end
有更好的方法吗?如果条件满足,我想将用户重定向到HomeController#index
。
非常感谢。
您至少需要在控制器上定义的index
和show
方法;确保你的路线上有它们。我认为索引不需要使用before_action
。此外,如果trial_expired
是一项昂贵的操作,则可以对其进行记忆。
class HomeController < ApplicationController
before_action :redirect_if_trial_expired, only: [:show]
def index; end
def show; end
private
def redirect_if_trial_expired
redirect_to home_path if current_user.trial_expired?
end
end