0

我的 application_controller.rb 中有几个方法,因为我需要能够从我的应用程序的任何地方调用它们。我也做了很多参数检查,看看是否应该允许/禁止该方法。

寻找有关此代码的建设性想法:

  • 关于重构参数部分的任何想法?
  • 关于重构这个的任何想法可能会移出application_controller?(使其成为模型方法,但这不能重定向到某些 url/位置)

is_deleted 方法:

  def is_deleted?
    if user_signed_in?
      if params[:action] != "reactivate" && 
         params[:action] != "destroy" && 
         params[:action] != "enable" && current_user.is_deleted == true
        redirect_to '/reactivate'
      end
    end
  end

is_banned? 方法:

      def is_banned?
        if user_signed_in?
          if current_user.present? && current_user.banned?
            sign_out current_user
            flash[:error] = "Your account has been suspended for continued misbehaviour"
            redirect_to login_path
          end
        end
      end
4

1 回答 1

1

将其移至模型是一个坏主意。渲染/重定向是控制器的工作。

这是您的代码的较短版本

def is_deleted?
  if user_signed_in? && !["reactivate", "destroy", "enable"].include?(params[:action]) && current_user.is_deleted
    redirect_to '/reactivate'
  end
end

def is_banned?
  if user_signed_in? && current_user.banned?
    sign_out(current_user) and redirect_to(login_path, :notice => "blah blah")
  end
end
于 2013-05-29T10:07:18.803 回答