小编732*_*732的帖子

ActiveAdmin + CanCanCan错误:受保护的方法`authorize!' 调用<Every ActiveAdmin Controller>

我在使用ActiveAdmin与CanCanCan合作时遇到了一些麻烦.我在Rails 4应用程序中使用CanCanCan版本1.9.2和ActiveAdmin版本1.0.0.pre.通过添加load_and_authorize_resourcecheck_authorization我的ApplicationController 设置我的能力类并在我的应用程序的其余部分启用授权检查后,我收到错误

protected method 'authorize!' called for #<Activeadmin::<SomeControler>> (NoMethodError)

经过一番搜索,我遇到了这个 GitHub问题,看起来和我遇到的问题完全一样.但是,解决方案对我来说根本不起作用.在config/initializers/active_admin.rb中,除其他外: ... config.authorization_adapter = ActiveAdmin::CanCanAdapter ... 我还确保controller.authorize_resource在任何ActiveAdmin控制器中都没有引用,但是protected method authorize! ...当我尝试从集成测试中访问任何ActiveAdmin资源时仍然会收到错误.

经过一些试验和错误以及更多搜索后,我发现load_and_authorize_resource不建议从ApplicationController 调用,并且如上所述将ActiveAdmin的authorization_adapter设置为CanCanAdapter应该会自动在ActiveAdmin中启用CanCanCan的授权检查,但是check_authorization因为资源未被授权load_and_authorize_resource从ApplicationController中删除ActiveAdmin控制器.

那么启用CanCanCan对ActiveAdmin控制器的授权检查的正确方法是什么?我应该如何集成CanCanCan和ActiveAdmin,以便非管理员用户无法访问任何ActiveAdmin资源?

我还将问题发布到ActiveAdmin邮件列表,但没有得到回复.任何帮助将不胜感激.

ruby-on-rails activeadmin ruby-on-rails-4 cancancan

4
推荐指数
1
解决办法
1715
查看次数

MongoDB Shell:"$或"查询和explain()出错

我正在尝试对MongoDB"$或"查询进行一些分析,而我在Mongo shell中遇到'explain()'命令时遇到问题.当我使用find命令运行我的查询时,它会工作并返回一条记录,如预期的那样.当我在find()的末尾添加'explain()'时,我收到以下错误:

未捕获的异常:错误:{"$ err":"无效的运算符:$或","code":10068}

我正在尝试以下查询:

db.people.find({"query" : 
                   {"$or" : [ 
                       {"site" : "mysite", "site_id" : "587125722"}, 
                       {"user_id" : ObjectId("4fb811aae4b0b628b485a58d")}
                   ]}, 
                "$orderby" : { "global_id" : 1, "user_id" : 1}
                })
Run Code Online (Sandbox Code Playgroud)

如果我将"$或"更改为"或",则explain()工作正常,但查询返回0结果.我的印象是他们的语法应该是相同的,有或没有explain(),所以我做错了什么?我正在使用2.0.4版.感谢任何可能提供帮助的人.

mongodb mongodb-shell

3
推荐指数
1
解决办法
2193
查看次数