0
我正在研究改進Rails應用程序中控制器操作的性能。在看完一些性能指標計數器之後,我現在知道問題在於我們在整個模型代碼中執行了多次授權檢查。他們看起來是這樣的:提高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檢查的地方,請求通常最終會進入數據庫的次數不少。這似乎是一種浪費的做事方式。有什麼方法來加快這種授權檢查? (假設緩存是這裏的路要走)
這種方法(如果我理解它的權利)將不會在我的情況下工作,因爲雖然成員資格的名單是有限的,它是動態的,即。用戶可以是潛在的大量公司的成員。當前的實現仍然是非常快速的單表查找(從將用戶映射到公司並具有指示成員級別的角色掩碼的關聯表)。我正在尋找有效避免碰到數據庫的方法,因爲每次請求會多次調用該成員資格檢查,並且成員身份不會隨時間而改變。 –