如果我使用 Devise 和 Rolify 进行 CanCan 设置,我应该能够使用 resourcecify 来限制对不同资源类型的访问权限吗?
例如。
假设我有一个与 model_a 有 has_many 关系的组织模型。
用户也有一个他们所属的单一组织。用户有许多 model_b 实例作为他们的关联。我想将用户在我的整个组织中可以访问的范围限制为他们所属的组织。
我应该能够为能力类设置类似的东西:
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
org_id = user.organization.id unless user.organization.blank?
if user.has_role?(:user)
can :access, :home
can [:read, :calendar], :model_a, :organization_id => user.organization.id if user.organization
can :read, :model_b, :user_id => user.id
can [:read, :update], :users, :id => user.id
end
end
但是我的不同资源会不断出现在我的应用程序的不同部分,除非我将查询限制在特定用户的这个组织中。是什么赋予了?我认为 rolify 应该自动为我做到这一点?或者我应该在我的 model_a 和 model_b 类中使用 resourcecify 来设置它?如果是这样,我是否还需要为这两个模型设置连接表到我的 rolify 表?或者这可以是多态的吗?
谢谢!