構築しているアプリケーションの役割ベースの管理システムにCanCanを使用しています。これはWebショップの一種のテンプレートであるため、管理者はアクセスできるWebショップごとに異なる役割を持つことができます。例:ウェブショップ1では彼はモデレーターであり、ウェブショップ2では編集者です。
したがって、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メソッドを呼び出せないように見えることです。
undefined local variable or method `current_shop' for #<Ability:0x104df38b0>
誰かがこれについて行く方法を知っていますか?よろしくお願いします!