我的网站有一个重要的角色方面,我的能力.rb文件已经发展成为一个庞然大物。现在,每次调用load_and_authorize_resource
时,它都会执行25次查询以检查“角色”记录。大多数这些查询都是无关紧要的,因为除了与正在使用的控制器相关的权限之外,它们还管理着许多不同的权限。
假设在companies
控制器上,我只想检查Company
和Project
的权限,我想忽略Task
,Employee
,和Assignment
。
如何将参数发送到ability.rb
,以便每次只执行相关查询?
答案 0 :(得分:3)
嗯,有一个建议是,你可以为公司和项目定义自己的能力模型。
快速跳跃的东西与使用here的概念相同。
也许您可以分别覆盖公司和项目控制器中的current_ability
方法。类似的东西:
def current_ability
@current_ability ||= CompanyAbility.new(current_user)
end
在您的CompanyAbility
模型中,您可以在此处为公司定义自定义权限设置。
希望有所帮助。