未找到权威政策

时间:2015-12-26 23:52:13

标签: ruby-on-rails ruby

我原来的问题已经解决了,但它已经再次发生,并且没有使用相同的方法修复

我在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

1 个答案:

答案 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