CanCanCan:如何为每种方法设置权限

时间:2018-10-05 15:23:40

标签: ruby-on-rails ruby cancancan

我有一个模型Report和ReportsController。 有几十个动作。

我需要为每个角色的每个contoller操作设置权限。 如何实现呢?

1 个答案:

答案 0 :(得分:2)

ability.rb中,您可以拥有

if user.has_role?(:foo)
  can :some_custom_action, Report
end

if user.has_role?(:bar)
  can([:some_other_custom_action, :even_more_action], Report)
end

authorize_resource将进行检查,或者为了获得更多控制权,您可以在authorize!(action_name.to_sym, @report || Report)中呼叫before_action

还将动作传递到accessible_by(current_ability, action_name.to_sym)范围