什么是cancan的accessible_by(提取记录)中的current_ability?

pup*_*eno 12 ruby authorization scope ruby-on-rails cancan

在cancan的文档中,它显示了如何以这种方式获取所有可访问的记录(在http://wiki.github.com/ryanb/cancan/fetching-records中):

@articles = Article.accessible_by(current_ability)
Run Code Online (Sandbox Code Playgroud)

但是什么current_ability?我已经尝试传递我用于身份验证和授权的当前用户,但是我遇到了这个错误:

NoMethodError: undefined method `conditions' for #<User:0x1092a3b90>
Run Code Online (Sandbox Code Playgroud)

任何想法我应该传递给accessible_by什么,或者这里有什么问题?

Jer*_*ten 10

CanCan扩展ActionController::Basecurrent_ability方法(以及其他),这是你ApplicationController应该继承的类.因此,问题中的示例代码应该按原样运行.

  • 您还可以使用您定义的能力类的实例传递自己的能力.能力类是包含CanCan :: Ability的能力类,你可以这样使用它:Ability.new(current_user) (6认同)