我原来的问题已经解决了,但它已经再次发生,并且没有使用相同的方法修复
我在Rails中编写一个简单的API,使用AuthLogic和Pundit进行授权,并出现此错误:
from pyspark import SparkContext, SparkConf
conf = SparkConf().setAppName("app-name-of-your-choice").setMaster("local[*]")
sc = SparkContext(conf=conf)
# Your code here
我没有像我发现的大多数其他问题那样授权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">`
,而且所有相关文件都存在,所以我无法弄清楚发生了什么。
我还在使用Pundit和AuthLogic的相同组合开发另一个应用程序,即使使用相同的文件/类名,它也能完美运行。
这是我的nil
:
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
答案 0 :(得分:0)
右...
TL; DR - 重新启动服务器修复它
出于某种原因,重新启动我运行的rails server
实例修复了问题。也许Pundit在配置文件中有加载策略的东西?我不知道,因为我在启动服务器之前在pundit
加载了Gemfile
gem,但是我没有在我的ApplicationController
中加载它。也许这会破坏一些东西。
修改强>
然而,现在另一个控制器遇到了同样的问题!
好的,第二个问题是通过在命令行上运行rails g pundit:install
,然后在app/policies/skrypt_policy.rb
中更改此行来解决的:
class Scope < Scope
到此:
class Scope < ApplicationPolicy::Scope