在我的模型中,我有相当数量的模型Item的子类。我希望能够指定对于给定角色,他们对Item的权限适用于Item的所有子类而不显式列出它们;如果我添加新的Item子类,我不想记得更新权限。我怎样才能做到这一点?
例如,此权限
if user.role? :customer_service
can :read, Item
end
不允许客户服务代表阅读内阁的细节,其中内阁<项目
答案 0 :(得分:0)
我认为你可以通过向can声明发送一个块来做到这一点。也许是这样的:
if user.role? :cutomer_service
can do |action, subject_class, subject|
# Checks if action is :read and if subject_class is a subclass of Item
action == :read && subject_class < Item
end
end
我没有对此进行测试,但我认为它应该可行。