我已经用 Devise 和 CanCan 启动了一个 Rails 应用程序。我有与文章有一对多关系的用户。我是 CanCan 的新手,这就是我打算做的事情:
行政
- 可以对文章执行任何操作
登录用户
- 可以阅读和创建文章
- 可以编辑和销毁自己的文章
访客用户
- 可以看文章
但我无法理解 CanCan 的语法。我知道它会是这样的。
def initialize(user)
user ||= User.new
if user.admin?
can :manage, Article
else
can :read, Article
end
end
但这仅适用于管理员和来宾用户,我不确定如何区分来宾用户和登录用户,因为当用户为空时它会创建一个新的用户对象。我已经看到代码应该是这样的can [:edit, :destroy], Article, :user_id => user.id
,但我不确定这将如何适合初始化方法。
最后一个问题,如果我只can :read, Article
在来宾上定义一个,它会阻止其他操作,例如创建和更新,例如将读取操作列入白名单吗?
任何帮助,将不胜感激。非常感谢!