Rails 4 - Pundit - создать политику

Я пытаюсь понять, как использовать pundit в моем приложении Rails 4.

У меня есть вид профиля, в котором я хочу отобразить ссылку для создания нового проекта при условии авторизации pundit.

Я попробовал каждую из следующих формулировок:

 <%# if policy(Project.new).create? %>
                            <%# if policy(Project).create? %>
                            <%# if policy(@project).create? %>
                            <%# if policy(Projects).create? %>
                            <% if policy(project).create? %>


                             <%= link_to 'CREATE A, PROJECT', new_project_path, :class=>"btn btn-info"  %>
                            <% end %> 

Ассоциация между проектом и профилем:

проект

belongs_to :profile

Профиль

has_many :projects, dependent: :destroy

Моя политика проекта имеет:

def new?
        true
        # create?
    end

    def create?
        true

    end

когда я пытаюсь использовать эту строку в представлении профиля:<% if policy(Project).create? %>

Я получаю сообщение об ошибке:

неверное количество аргументов (задано 2, ожидается 0)

когда я пытаюсь использовать эту строку в представлении профиля:<% if policy(@project).create? %>

Я получаю сообщение об ошибке:

неверное количество аргументов (задано 2, ожидается 0)

когда я пытаюсь использовать эту строку в представлении профиля:<% if policy(Projects).create? %>

Я получаю сообщение об ошибке:

невозможно найти политику ноль

когда я пытаюсь использовать эту строку в представлении профиля:<% if policy(project).create? %>

Я получаю сообщение об ошибке:

неопределенная локальная переменная или метод `project 'для <#: 0x007faf5255d468> Вы имели в виду? project_url

Есть ли что-то особенное, что мне нужно сделать, чтобы проверить авторизацию проекта, если страница просмотра находится в другой модели (например, профиль, тестирование авторизации для этого профиля относительно того, может ли он создать проект)? Я застрял и гадал, как решить эту проблему.

В контроллере моих проектов у меня есть метод create с:

def create
    @project = Project.new(project_params)
    @project.profile = current_user.profile

    respond_to do |format|
      if @project.save
        format.html { redirect_to @project }
        format.json { render :show, status: :created, location: @project }
      else
        format.html { render :new }
        format.json { render json: @project.errors, status: :unprocessable_entity }
      end
    end
  end

Инициализатор для полиса:

class ProjectPolicy < ApplicationPolicy

    attr_reader :user, :record

  def initialize(user, record)
    @user = user
    @record = record
  end

Ответы на вопрос(2)

Ваш ответ на вопрос