2

通常有很多在Ruby模型on Rails項目,所以:模型應該在Rails中使用名稱空間嗎?

  1. 它是一個很好的做法,他們命名空間(模塊/文件夾)?有什麼缺點? EG:

      • category.rb
      • details.rb
    • 產品
      • category.rb
      • base.rb

    (而不是ShopCategory,有店::分類?)

  2. 也應該控制器以同樣的方式進行命名空間?

+1

對於那些到達長後,有人問,請記住,今天這通常知道作爲一個[主持人](http://en.wikipedia.org/維基/型號%E2%80%93view%E2%80%93presenter),[裝飾](http://en.wikipedia.org/wiki/Decorator_pattern)或[模型接口(HTTP://en.wikipedia .org/wiki/Marker_interface_pattern) - 取決於重構文件中存儲的功能類型。 – 2012-11-05 21:30:57

回答

2

最近我發現這個職位,但是從2007年回來PRATIK奈克。那裏的模型名稱空間並不像數據庫。使用下面的東西。甚至還有DHH的報價。

Rails::Initializer.run do |config| 
    # Your existing stuff 
    config.load_paths << "#{RAILS_ROOT}/app/models/pets" 
end 

http://m.onkey.org/2007/12/9/namespaced-models

P/S:我不知道該文章是否仍然適用與否,只是我最近發現,當我在我的模特想要的命名空間。

2

我做了很多。
所以是的,我認爲這是你應該做的。

這將是容易得多,如果你有他們在子目錄細分讓他們都在同一個,而不是讓你查看模型。

同樣的建議也適用於您的控制器和你的意見。

+0

謝謝Damien。 這就是我所說的,將它們分割成子文件夾(當然,還要尊重rails慣例,包括它們到相應的模塊中)。 – 2009-11-03 13:09:59

-3

我建議使用單一表繼承您的分類模型。例如:

Category < ActiveRecord::Base end 

ShopCategory < Category end 

ProductCategory < Category end 

Shop < ActiveRecord::Base 
    belongs_to :shop_category 
end 

Product < ActiveRecord::Base 
    belongs_to :product_category 
end 

這將封裝常用的類行爲和屬性到一個單一的模式,可以讓您重用了大量的代碼,並有一個控制器。當底層類具有某些共同的數據/功能時,使用名稱空間只對我有意義。 (例如:acts_as_versioned創建模型命名空間下一個版本類)

+2

這不是STI的目標。它不會讓你的模型更具可讀性,相反。我不會那樣做。 – 2009-11-03 16:53:56

+0

命名空間與共享功能無關。它旨在區分不同的名稱共享類。 – meagar 2012-05-28 15:49:22

相關問題