通常有很多在Ruby模型on Rails項目,所以:模型應該在Rails中使用名稱空間嗎?
它是一個很好的做法,他們命名空間(模塊/文件夾)?有什麼缺點? EG:
- 店
- category.rb
- details.rb
- 產品
- category.rb
- base.rb
等
(而不是ShopCategory,有店::分類?)
- 店
也應該控制器以同樣的方式進行命名空間?
通常有很多在Ruby模型on Rails項目,所以:模型應該在Rails中使用名稱空間嗎?
它是一個很好的做法,他們命名空間(模塊/文件夾)?有什麼缺點? EG:
等
(而不是ShopCategory,有店::分類?)
也應該控制器以同樣的方式進行命名空間?
最近我發現這個職位,但是從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:我不知道該文章是否仍然適用與否,只是我最近發現,當我在我的模特想要的命名空間。
我做了很多。
所以是的,我認爲這是你應該做的。
這將是容易得多,如果你有他們在子目錄細分讓他們都在同一個,而不是讓你查看模型。
同樣的建議也適用於您的控制器和你的意見。
謝謝Damien。 這就是我所說的,將它們分割成子文件夾(當然,還要尊重rails慣例,包括它們到相應的模塊中)。 – 2009-11-03 13:09:59
我建議使用單一表繼承您的分類模型。例如:
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創建模型命名空間下一個版本類)
這不是STI的目標。它不會讓你的模型更具可讀性,相反。我不會那樣做。 – 2009-11-03 16:53:56
命名空間與共享功能無關。它旨在區分不同的名稱共享類。 – meagar 2012-05-28 15:49:22
對於那些到達長後,有人問,請記住,今天這通常知道作爲一個[主持人](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