我原來的問題解決了,但它再次發生,並用同樣的方法權威人士政策
我正在寫在Rails的一個簡單的API,使用AuthLogic和權威人士授權是不固定的,而有這樣的錯誤:
unable to find policy `SkryptPolicy` for `#<Skrypt id: 1, title: "Maths", route: "/maths/:action", script: "def main params[:one] * params[:two] if params[:ac...", user_id: nil, created_at: "2015-12-27 02:12:36", updated_at: "2015-12-27 02:12:36">`
我沒有授權nil
最喜歡的這個,我發現其他問題,並且存在所有相關的文件,所以我想不通這是怎麼回事。
我還在研究另一個使用Pundit和AuthLogic相同組合的應用程序,即使使用相同的文件/類名稱,它也可以很好地工作。
這是我app/controllers/application_controller.rb
:
class ApplicationController < ActionController::Base
include Pundit
protect_from_forgery with: :null_session
before_filter { response.header['Access-Control-Allow-Origin'] = '*' if request.format.json? }
protected
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = (current_user_session && current_user_session.user) || User.find_by(api_key: params[:api_key])
end
end
app/policies/skrypt_policy.rb
:
class SkryptPolicy < Struct.new(:user, :skrypt)
class Scope < Scope
def resolve
user.skrypts
end
end
def index?
not user.nil?
end
alias_method :create?, :index?
def show?
user && (skrypt.user == user)
end
alias_method :update?, :show?
alias_method :destroy?, :show?
end