Ruby on rails rails cancan gem,,can-method-in-ability.rb如何使用

Ruby on rails rails cancan gem,,can-method-in-ability.rb如何使用,ruby-on-rails,cancan,Ruby On Rails,Cancan,我正在使用cancan gem,但我有点困惑。 区别是什么: can :read, Post can :read, :post can :read, @post 更好(安全)的方法是什么 指示用户可以阅读任何帖子,因为它通常引用模型 can :read @post can :read :post 指示用户可以阅读该特定文章(通常是因为该文章与用户或类似的内容有关联) 如何设置您的能力页面的示例: if user.admin? can :read Post #admin can

我正在使用cancan gem,但我有点困惑。 区别是什么:

  can :read, Post
  can :read, :post
  can :read, @post
更好(安全)的方法是什么

指示用户可以阅读任何帖子,因为它通常引用模型

can :read @post
can :read :post
指示用户可以阅读该特定文章(通常是因为该文章与用户或类似的内容有关联)

如何设置您的能力页面的示例:

if user.admin?
  can :read Post #admin can read any post
else
  can :read Post, :user_id => user.id #non-admins can read only posts that belong to them.
end

我从未见过@post或:post被用来定义能力。通常,在检查用户是否可以对模型的特定实例执行操作时,使用控制器或视图中的这些选项。例如,如果(可以?:阅读@post)。。。我在官方文件和
if user.admin?
  can :read Post #admin can read any post
else
  can :read Post, :user_id => user.id #non-admins can read only posts that belong to them.
end