如何使用 Pundit Gem 检索所有用户策略和范围?我需要返回一个包含所有用户策略的 json 对象来检查前端 javascript 模板中的权限。
使用 CanCanCan gem,我可以做这样的事情:
class Ability
include CanCan::Ability
# ....
def to_list
rules.map do |rule|
object = { actions: rule.actions, subject: rule.subjects.map{ |s| s.is_a?(Symbol) ? s : s.name } }
object[:conditions] = rule.conditions unless rule.conditions.blank?
object[:inverted] = true unless rule.base_behavior
object
end
end
end
Run Code Online (Sandbox Code Playgroud)
可以用 Pundit 做同样的事情吗?