Я использую CanCan для ролевой админ-системы в приложении, которое я создаю. Это своего рода шаблон для веб-магазинов, поэтому администратор может иметь другую роль в каждом интернет-магазине, к которому у него есть доступ. Например: в интернет-магазине 1 он модератор, а в интернет-магазине 2 - редактор.NameError при вызове метода в классе CanCan Класс
Так что мне нужно сделать в способности CanCan. Класс проверяет, какую роль играет текущий пользователь в текущем магазине (current_shop). Я написал это:
class Ability
include CanCan::Ability
def initialize(admin)
if admin.supervise?(current_shop, controller_gsub)
can :manage, :all
elsif admin.manage?(current_shop, controller_gsub)
can :manage, :all
elsif admin.access?(current_shop, controller_gsub)
can :read, :all
end
end
end
Проблема в том, что я не могу показаться, чтобы вызвать метод current_shop из класса Ability, потому что я получаю эту ошибку:
undefined local variable or method `current_shop' for #<Ability:0x104df38b0>
Кто-нибудь знает, как идти об этом ? Thanx заранее!
Thanx для вашего ответа! У меня сейчас это работает;) Бизнес-логика. Администратор может иметь разные роли для каждой модели в магазине и разные роли для каждого магазина. Таким образом, он может быть руководителем «Ордена» в магазине 1 и только читателем «Ордена» в магазине 2. :) –