我有一个Rails 4应用程序,我根据我的应用程序中的模型设置编写了CanCan Ability模型。虽然测试有时会起作用,但事实并非如此。我不知道问题是什么。日志中没有任何内容可以指出问题。我也不认为那是干净的。关于如何改进这种能力模型的任何建议?这似乎非常多余和令人困惑。
if user
##
can :manage, User do |u|
case u.account
## If user is a Developer allow it to only be managed by itself (user)
when Developer
u == user
## If user is a Organization allow it to only be managed by it's founders
when Organization
u.account.founders.exists?(user)
else
false
end
end
can :manage, App do |a|
case a.appable
## If app belongs to a Developer allow it to only be managed by it owner (developer)
when Developer
a.appable.id == user.id
## If app belongs to a Organization allow it to only be managed by its organizations' founders
when Organization
a.appable.founders.exists?(user)
else
false
end
end
##
end
答案 0 :(得分:0)
至于清理它,您可以考虑通过用户角色组织逻辑。通过这种方式,您可以轻松查看给定角色并了解他们执行和无权访问的所有功能。
这样的事情:
if user.developer?
can :manage User, id: user.id
can :manage App, App.appable_by(user)
end
注意:您可能需要编写一些自定义查找程序,例如App.appable_by(user)
,以便测试规则
我没有完全遵循您对组织/创始人所做的尝试。如果这是像user.founder这样的角色?然后如上所述对待它,但使用不同的授权规则。