2011-09-16 60 views
0

想知道在Rails中定義名稱空間模型的正確方法是什麼?我看到它有兩種定義。在大多數圖書館,他們似乎被定義爲這樣的在Ruby on Rails中定義名稱空間模型的正確方法

module Fruit 
    class Banana < ActiveRecord::Base 
    ... 
    end 
end 

而Rails的發電機似乎更喜歡這個

class Fruit::Banana < ActiveRecord::Base 
    ... 
end 

他們都明顯的工作,但有什麼區別?哪一個是首選?謝謝!

回答

-1

它們是相同的,其次是語法糖。

+1

這是不正確的。我添加了一個解釋自己的答案。 – Uri

0

它們是一樣的,但「更長」的版本可以讓你添加其他東西到模塊中。 I寧願這樣做,因爲我經常會以這種方式將多個小東西包裝到模塊中。

1

它們不相同,更詳細的方式將實際定義模塊,而更短的方式將期望它已被定義。

class Fruit::Banana; end 

這會拋出一個NameError。但是,如果你這樣做

module Fruit; end 
class Fruit::Banana; end 

它不會拋出一個錯誤。

+0

哇,你是對的。 'irb(main):002:0> class Fruit :: Banana;結束' 'NameError:未初始化的常量水果' – Chloe

相關問題