Я смотрю на повышение производительности действия контроллера в нашем приложении Rails.Посмотрев на некоторые счетчики перфектов, я теперь знаю, что проблема заключается в том, как мы выполняем несколько проверок авторизации в коде нашей модели.Они выглядят примерно так:
Class Company < ActiveRecord::Base
def member?(user)
#look up a table to check for membership if @is_member does not exist else return @is_member
end
def employee?(user)
#look up a table to check for membership
end
def manager?(user)
#look up a table to check for membership
end
end
class SomeModel < ActiveRecord::Base
def some_method
do_something if current_company.employee?(current_user)
end
end
Поскольку существует множество мест, где мы выполняем проверку, аналогичную some_method, запросы обычно заканчиваются попаданием в базу данных много раз.Это похоже на расточительство.Как можно ускорить такие проверки авторизации?(Предполагая, что кэширование - это то, что нужно)