我的cancan能力模型已经运行了6个多月了。一直存在的控制器之一是QuestionsController。我最近添加了另一个控制器,模型和索引页面。控制器名称是QuestionsBasicsController。在我的能力模型中,我有:
if user.permission >= 8 # admin
can :manage, [Question, QuestionsBasic]
end
在QuestionsController和QuestionsBasicsController的顶部,我有:
load_and_authorize_resource
我可以在我的开发机器上访问QuestionsController和QuestionsBasicsController的索引页面。在我将能力模型上传到我的服务器后,我重新启动了服务器。我可以在我的服务器上访问Question的索引页面,但不能访问QuestionsBasic。在我的开发机器上我有ruby 1.9.2而在我的服务器上我有1.8.7。它可能是Ruby版本的区别吗?
更新:因为以另一个模型的名称开头的模型的名称会导致问题,...至少以我构建我的能力模型的方式。另外,我最近发现了另一个型号名称,但是对CanCan来说效果很好。我认为这可能是一个保留的词,但对此并不积极。当我将模型,控制器,路由和代码的名称更改为新名称时,它通过了CanCan。虽然没有对CanCan的反思......我认为这真棒,太棒了,太棒了!谢谢,瑞安贝茨!
答案 0 :(得分:2)
同意dleatham,尝试将原来的陈述分成两行:
if user.permission >= 8 # admin
can :manage, Question
can :manage, QuestionsBasic
end