Rails: CanCanCan для ограничения количества создаваемых ресурсов

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

Как лучше всего добиться моего требуемого аффекта?

1 ответ

Решение

Ваше предварительное действие запускается для каждого действия в контроллере. Ограничьте это, чтобы создать действие:

before_action :authorize_user, only: :create
Другие вопросы по тегам