如果我使用Devise和Rolify进行CanCan设置,我应该能够使用resourcify来限制对不同资源类型的访问吗?
例如。
假设我有一个与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类中使用resourcify来设置它?如果是这样,我还不需要为这两个模型设置连接表到我的rolify表吗?或者这可能是多态的?
谢谢!