我正在使用CanCanCan gem作为我的rails应用程序。 我想根据用户订阅计划限制page创建的数量。 例如,具有basic计划的用户最多只能创建10页。 我怎样才能实现它? 我试图通过使用以下规则来引入限制:
can :create, :pages if user.subscription_plan == "basic" && Page.count <= 10
但是一旦我的页码超过10,它就会阻止访问pages控制器上的每个控制器。 我在pages控制器上使用以下代码。
before_action :authorize_user . . . def authorize_user authorize! :create, :pages rescue => e redirect_to admin_path, :alert => "You've reached your page creation limit." end如何最好地达到我所要求的效果?
I'm using CanCanCan gem for my rails app. I want to limit number of page creation based on user subscription plan. e.g. user having basic plan can only create maximum of 10 pages. How can I achieve it? I've tried to introduce a limitation by using following rule:
can :create, :pages if user.subscription_plan == "basic" && Page.count <= 10
But as soon as my page number exceeds 10 it block access to every controller on pages controller. I'm using following code on pages controller.
before_action :authorize_user . . . def authorize_user authorize! :create, :pages rescue => e redirect_to admin_path, :alert => "You've reached your page creation limit." endHow best to achieve my required affect?
最满意答案
您的之前操作将针对控制器中的每个操作触发。 将其限制为“创建”操作:
before_action :authorize_user, only: :createYour before action is triggered for every action in the controller. Limit it to 'create' action:
before_action :authorize_user, only: :create更多推荐
发布评论