2012-03-08 53 views
2

我的cancan模型在6個月以上運行良好。當時一直在使用的控制器之一是QuestionsController。我最近添加了另一個控制器,模型和索引頁面。控制器名稱是QuestionsBasicsController。在我的能力模型,我有:奇怪的cancan問題...在開發機器上工作,但不在服務器上

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

在QuestionsController和QuestionsBasicsController的頂部,我有:

load_and_authorize_resource 

我能夠訪問索引頁兩種QuestionsController和QuestionsBasicsController我的開發機器上。在我將能力模型上傳到我的服務器後,我重新啓動了服務器。我可以訪問問題的索引頁面,但不能訪問服務器上的QuestionsBasic。在我的開發機器上,我有紅寶石1.9.2,而在我的服務器上我有1.8.7。它可能是Ruby版本的差異嗎?

更新:爲什麼它是值得以另一個模型的名稱開始的模型名稱引起問題,......至少以我構建我的能力模型的方式。另外,我最近發現了另一個可以正常工作但CanCan的模型名稱。我認爲這可能是一個保留字,但我並不積極。當我將模型,控制器,路由和代碼的名稱更改爲通過CanCan的新名稱時。雖然Cancan沒有反思......我認爲它非常棒,真棒,真棒!謝謝,瑞安貝茨!

+2

我碰到的,在過去幾個奇怪的語法事情慘慘。你有沒有試過把這個「can」聲明分解成兩個單獨的「can」聲明,每個模型一個?另外,一個模型是否從另一個模型繼承?很久以前,我遇到了CanCan在有繼承關係的類上廢話的地方。如果內存服務,我必須通過新的CanCan實例才能正確使用它。 – 2012-03-09 08:09:35

+0

謝謝。 +1好的信息。一個不會從另一個繼承。將嘗試分離這兩個陳述。奇怪的是,我不明白爲什麼它在開發中起作用,但不在生產中。 – Jay 2012-03-09 14:30:17

+1

你的Ruby版本假設絕對是一種可能性。我比較了一下從1.8到1.9(http://www.davidflanagan.com/2007/08/changes-between-ruby-18-and-ruby-19.html)和CanCan源代碼的變化, rules.rb。似乎有一些重疊點,特別是範圍。對1.9中包含?()進行了修改,用於解析CanCan規則生成器中的多個主題/類。這可能是問題的根源。很難說。 – 2012-03-09 15:14:10

回答

2

同意dleatham,儘量分配給原始語句轉換成2線:

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

謝謝思維。這工作。 – Jay 2012-04-11 18:52:15

相關問題