2016-01-02 24 views
1

最近,我開始一個新的rails項目只是爲了好玩,並決定在模型中使用命名空間。我有一些困難。正確的導軌模型namespacing

例如,我有模型Party

# app/models/party.rb 

class Party < ActiveRecord::Base 
end 

而且每一方都會有Chat

# app/models/party/chat.rb 

module Party 
    class Chat < ActiveRecord::Base 
    end 
end 

的問題是,當我打電話Party怎麼Rails會弄清楚,如果我叫module Partyclass Party

回答

3

事實上,如果你這樣做,Ruby會抱怨,因爲Party不能同時是一個模塊和一個類。所以至少,Party將需要保持一個類。

現在的「Rails的方式」而言,我們通常不會繼承我們的協會(即你的Chat可能會belong_to一個Party),我們只要把我們所有的車型在根命名空間(除非一個具有良好原因)。所以你有Partyapp/models/party.rbChatapp/models/chat.rb

我猜人會做一個命名空間的子類Party::Chat只要有一個不同::Chat已經存在,甚至可能導致與Ruby的常量查找這有時是反直覺的麻煩。

+0

感謝您的解釋! – bgr11n

+0

我的理解正確,對於大型項目模型文件夾將真的很大? – bgr11n

+0

正確。雖然模型通常只反映數據庫中的表格。預計'lib'文件夾也會隨着項目的大小而增長。 –