使用Cancan,Devise和Rolify重新加密以限制资源访问

时间:2014-10-20 19:15:14

标签: ruby-on-rails ruby-on-rails-3 devise cancan rolify

如果我使用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表吗?或者这可能是多态的?

谢谢!

0 个答案:

没有答案