我正在开发一个 Rails 应用程序,该应用程序在 users_controller 中有一大堆过滤器,这些过滤器查找由 Acts as State Machine 提供的用户的有状态角色。它们看起来像这样:
class UsersController < ApplicationController
before_filter :not_logged_in_required, :only => [:new, :create]
before_filter :find_user_or_current_user, :only => [:edit, :update]
before_filter :find_user, :only => [:suspend, :unsuspend, :destroy, :purge]
before_filter :admin_required, :only => [:suspend, :unsuspend, :destroy, :purge]
before_filter :check_administrator_role, :only [:index, :suspend, :destroy, :purge]
通过对用户控制器控制的每个操作的所有这些状态检查,性能成为一个问题,对用户列的 SQL 查询在我的机器上花费了 5 毫秒以上。
我只是假设所有这些过滤器都在拖动性能中起作用,我想知道如何最好地重构这些过滤器以改善从数据库中读取。