Использование Rails 4.2.4 с помощью приложения (3.5.2) и Pundit (1.0.1). Decent_exposure (2.3.2).Pundit: auhorize Index во вложенных ресурсах
У меня есть простая вложенная Associaton для пользователя и идей:
class User < ActiveRecord::Base
has_many :ideas
...
class Idea < ActiveRecord::Base
belongs_to :user
...
В routes.rb
devise_for :users
resources :users do
resources :ideas
end
Тогда я просто пытаюсь запретить доступ пользователей к/1/идеям, если current_user является а не владельцем идей (в этом примере, если current_user.id! = 1). Я не могу понять, как это сделать. Я могу показать только те current_user идеи на индексном с:
[контроллер Идеи]
def show
authorize idea
end
[Идея политика]
def show?
@current_user == @idea.user
end
Но как я могу запретить пользователю просто перейдите на страницу индекса других пользователей? Я думаю, что в контроллере идеи, которые я должен использовать что-то вроде:
def index
authorize user
end
Но что? Как я могу отправить в пользовательскую политику информацию об коллекции Idea? Или я должен авторизовать с помощью самой идеи?
Он отлично работает !! Большое спасибо. Второй подход более интуитивен для меня. Еще раз спасибо! – Galen
Второй подход определенно имеет больше смысла и его легче понять. :) –
deefour, какой из них является предпочтительным? (Я использую программу для проверки подлинности) –