hummingbird
@hummingbird

Как грамотнее реализовать ограничение доступа к «неопубликованному» материалу?

Есть новости. У новостей появились "статусы" - 0 или 1 (например).

Если "0", то новость не опубликована и доступ только у некоторых ролей, а если "1", то наоборот опубликована и к ней есть доступ у всех пользователей.

Использую CanCanCan и Rolify.

Подскажите, пожалуйста, как это грамотнее реализовать в RoR проекте?

Пока что на уме только проверка статуса и роли пользователя в шаблоне. Но также хочется простым пользователям отображать дефолтную ошибку 404, мол, ничего нет по такому ID.
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
В Вашем случае я бы использовал pundit scope
Примерно так
def resolve
  if user.admin?
    scope.all
  else
    scope.where(status: 2)
  end
end


А в контроллере, допустим так примерно
news = policy_scope(News).find(params[:id])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы