2

私は非常に標準的な設定をしています。Identity::Memberユーザーであり、それぞれProject::Projectがメンバーによって所有されています。認証と承認にDeviseと を一緒に使用します。Pundit

これが私のコードですProject::ProjectPolicy

class Project::ProjectPolicy < ApplicationPolicy
  attr_reader :member, :project

  def initialize(member, project)
    @member = member
    @project = project
  end

  ...

  def update?
    member == project.member
  end

  def edit?
    update?
  end

  ...

end

そして、ここに私のedit行動があります:

  # GET /projects/1/edit
  def edit
    authorize @project_project
    respond_with @project_project
  end

最後に、レスキューのセットアップApplicationController

rescue_from Pundit::NotAuthorizedError, with: :member_not_authorized

def member_not_authorized
  respond_with current_member, status: :unauthorized, location: -> { root_path }
end

しかし...何らかの理由で、編集をクリックすると編集ビューが表示されますが、すべての変更はブロックされ、ユーザーは更新と破棄のアクションを指示したのと同じように root_path にリダイレクトされます。なんで?

4

0 に答える 0