CanCanCan可以使用Rails 5并在数据库中定义功能

时间:2017-09-12 11:35:05

标签: ruby-on-rails cancancan ruby-on-rails-5.1

我在我的Rails 5应用程序(5.1.3)中使用CanCanCan并在数据库中定义功能。 这是我定义能力的结构 -

人---角色---许可---行动。 1个人可以拥有多个角色,每个角色映射到许多权限,每个权限都有许多操作。 PermissionsRole和ActionsPermission都具有has_and_belongs_to_many关系。

在actions表中,我已经定义了字段name,resource_name和is_object。

这是我的Ability.rb -

person.roles.first.permissions.each do |permission|
    permission.actions.each do |action|
      if action.is_object
        can action.name.to_sym, action.resource_name.constantize
      else
        can action.name.to_sym, action.resource_name.to_sym
      end
    end
  end

如果is_object为false,这似乎工作正常,即如果它只是一个没有模型的控制器。我正在尝试使用它来显示对象的记录,即使所有关联都已正确设置,我也会收到访问错误。

有谁知道如何解决这个问题?

编辑:我已经覆盖了所讨论模型的default_scope,导致所有记录的访问被拒绝。 当我删除它工作,但然后我看到所有记录,而不是该用户可以访问的记录。 无论如何都要覆盖默认范围并使记录授权有效吗?

0 个答案:

没有答案