2011-01-13 74 views
4

我使用Ruby on Rails的創建一個遊戲我玩網頁紅寶石。on Rails的拐點問題

我有一個User模型和Starbase模型。我想建立的關係是像這樣

class User < ActiveRecord::Base 
    has_many :starbases 
end 

class Starbase < ActiveRecord::Base 
    belongs_to :user 
end 

然而,當我打開腳本/控制檯,並嘗試訪問該用戶的母星是給我一個錯誤:NameError: uninitialized constant User::Starbasis

看起來好像它是拐點問題,Rails是不是複數化的母星是正確的。

我曾嘗試加入這個在intializers文件夾中是inflections.rb:

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.plural 'starbase', 'starbases' 
end 

,但它仍然沒有解決問題。任何人都可以提供有關如何使這項工作的建議?

歡呼

EEF

+0

不知道,但沒有這種變化要求服務器休息藝術? – Warren 2011-01-13 18:59:13

回答

5

你有沒有嘗試添加一個行逆拐點(即「奇異」):

inflect.singular "starbases", "starbase" 

我想在我的控制檯您的例子,它是單數化導致問題,而不是相反。我不確定這是否解決了其他問題(如路線),但它應該解決簡單的問題(我認爲)。

+0

嘿,我試過這個,但不幸的是我仍然得到相同的錯誤。 – RailsSon 2011-01-13 21:40:58

0

小動作我撿起來仔細檢查支持可能會如何主動singularize,或以複數我的類名,和/或模塊的名稱。

有你的Rails應用程序服務器上運行,並在新標籤中鍵入rails console進入你的Rails控制檯。在那裏,您可以輕鬆地再次檢查名稱的正確樣式。

很長的路要走ActiveSupport::Inflector.pluralize "fish" # => "fish"

一小段路"fish".pluralize # => "fish"

您可以在這裏找到更多的例子

https://github.com/rails/rails/blob/master/activesupport/test/inflector_test_cases.rb