我希望使用CanCan来处理权限。我的网站有许多不同的权限级别,并且大部分都是上下文感知的。例如,在我的三个主要模型中,以下是它们之间的关系:
注意,LeagueRelations是Leagues的嵌套资源。我想让用户修改联赛,并根据存储在league_relation中的数据来衡量每个用户的授权。然后,我希望用户仅基于用户模型中存储的数据来修改联赛关系。
简而言之:我基本上希望使用LeagueRelations来授权League操作,而使用Users来授权LeagueRelations操作。例如,league_relation.owner = true可以删除一个League,但是必须通过user.owner?才能删除LeagueRelation。当在联赛控制器内部时,如何基于league_relation的属性进行授权,并在其他控制器上的其他模型上授权其他操作。如果需要更多澄清,请留下评论。
谢谢。
class User < ActiveRecord::Base
has_many :league_relations
has_many :leagues, :through => :league_relations
end
class League < ActiveRecord::Base
has_many :league_relations
has_many :users, :through => :league_relations
end
class LeagueRelation < ActiveRecord::Base
belongs_to :user
belongs_to :league
end
注意,LeagueRelations是Leagues的嵌套资源。我想让用户修改联赛,并根据存储在league_relation中的数据来衡量每个用户的授权。然后,我希望用户仅基于用户模型中存储的数据来修改联赛关系。
简而言之:我基本上希望使用LeagueRelations来授权League操作,而使用Users来授权LeagueRelations操作。例如,league_relation.owner = true可以删除一个League,但是必须通过user.owner?才能删除LeagueRelation。当在联赛控制器内部时,如何基于league_relation的属性进行授权,并在其他控制器上的其他模型上授权其他操作。如果需要更多澄清,请留下评论。
谢谢。