Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 奇怪的坎坎问题。。。在开发机器上工作,但在服务器上不工作_Ruby On Rails 3_Cancan - Fatal编程技术网

Ruby on rails 3 奇怪的坎坎问题。。。在开发机器上工作,但在服务器上不工作

Ruby on rails 3 奇怪的坎坎问题。。。在开发机器上工作,但在服务器上不工作,ruby-on-rails-3,cancan,Ruby On Rails 3,Cancan,我的cancan能力模型已经运行了6个多月了。一直存在的一个控制器是QuestionsController。我最近添加了另一个控制器、模型和索引页面。控制器名称为QuestionsBasicController。在我的能力模型中,我有: if user.permission >= 8 # admin can :manage, [Question, QuestionsBasic] end 在问题控制器和问题基本控制器的顶部,我有: load_and_authorize_resource

我的cancan能力模型已经运行了6个多月了。一直存在的一个控制器是QuestionsController。我最近添加了另一个控制器、模型和索引页面。控制器名称为QuestionsBasicController。在我的能力模型中,我有:

if user.permission >= 8 # admin
  can :manage, [Question, QuestionsBasic]
end
在问题控制器和问题基本控制器的顶部,我有:

load_and_authorize_resource
我可以在我的开发机器上访问QuestionsController和QuestionsBasicController的索引页。将能力模型上传到服务器后,我重新启动了服务器。在我的服务器上,我可以访问问题索引页,但不能访问问题基本索引页。在我的开发机器上,我有ruby 1.9.2,而在我的服务器上,我有ruby 1.8.7。可能是Ruby版本的不同吗


更新:因为以另一个模型的名称开头的模型名称会导致问题,。。。至少以我构建能力模型的方式。除此之外,我最近还发现了另一个很好的模型名称,但它适用于CanCan。我认为这可能是一个保留的字眼,但我对此并不乐观。当我将模型、控制器、路由和代码的名称更改为新名称时,它传递了CanCan。但对坎坎没有任何思考。。。我觉得太棒了,太棒了,太棒了!谢谢,瑞安·贝茨

同意dleatham的观点,尝试将您的原始陈述分成两行:

if user.permission >= 8 # admin
  can :manage, Question
  can :manage, QuestionsBasic
end

过去我在CanCan上遇到过一些奇怪的语法问题。您是否尝试过将这个“can”语句分成两个单独的“can”语句,每个模型一个?另外,一个模型是否继承了另一个模型?很久以前,我遇到了CanCan在具有继承关系的类上失败的情况。如果记忆有用的话,我必须通过新的例子来让CanCan做对。谢谢+1良好的信息。一个不是从另一个继承的。将尝试分离这两个语句。奇怪的是,我不明白为什么它能在开发中工作,但不能在生产中工作。你的Ruby版本的假设肯定是可能的。我快速比较了一下从1.8到1.9()的变化和CanCan源代码,特别是rules.rb。似乎有一些重叠点,特别是范围。对1.9中的?()进行了修改,它用于解析CanCan规则生成器中的多个主题/类。这可能是问题的根源。很难说。