Авторизация с учетом контекста с использованием CanCan

Я хочу использовать CanCan для обработки моих разрешений. У моего сайта много разных уровней разрешений, и большинство из них зависит от контекста. Например, вот отношения в моих трех основных моделях:

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 - это вложенный ресурс лиг. Я хочу позволить пользователю изменять лиги и измерять авторизацию каждого пользователя на основе данных, хранящихся в league_relation. Затем я хотел бы, чтобы пользователь изменил отношение лиги, основываясь только на данных, хранящихся в модели пользователя.

Чтобы быть кратким: я в основном хочу, чтобы LeagueRelations использовалась для авторизации действий League, а Users - для авторизации действий LeagueRelations. т.е. league_relation.owner = true, чтобы удалить лигу, но user.owner? должно быть истинным, чтобы удалить LeagueRelation. Как я могу авторизоваться на основе атрибутов league_relation внутри контроллера лиги и разрешить другие действия в других контроллерах на других моделях. Пожалуйста, оставьте комментарий, если вам нужны дополнительные разъяснения.

Спасибо.

7
задан Maurício Linhares 18 August 2011 в 14:45
поделиться