我已经开始使用Devise和CanCan创建一个Rails应用程序。我的用户与文章之间有一对多的关系。我对CanCan不熟悉,这是我的计划:
管理员: - 可以对文章执行任何操作
登录用户: - 可以阅读和创建文章 - 可以编辑和删除自己的文章
访客用户: - 可以阅读文章
但我很难理解CanCan的语法。我知道它大致应该是这样的:
但这只适用于管理员和访客用户,我不确定如何区分访客用户和已登录用户,因为当用户为空时会创建一个新的User对象。我看到代码应该像这样:
最后一个问题,如果我只对访客定义了
任何帮助都将不胜感激。非常感谢!
管理员: - 可以对文章执行任何操作
登录用户: - 可以阅读和创建文章 - 可以编辑和删除自己的文章
访客用户: - 可以阅读文章
但我很难理解CanCan的语法。我知道它大致应该是这样的:
def initialize(user)
user ||= User.new
if user.admin?
can :manage, Article
else
can :read, Article
end
end
但这只适用于管理员和访客用户,我不确定如何区分访客用户和已登录用户,因为当用户为空时会创建一个新的User对象。我看到代码应该像这样:
can [:edit, :destroy], Article, :user_id => user.id
,但我不确定这如何适用于initialize方法。最后一个问题,如果我只对访客定义了
can :read, Article
,是否会阻止其他操作,比如创建和更新,就像白名单中的读取操作一样?任何帮助都将不胜感激。非常感谢!