通常Ruby on Rails项目中有很多模型,所以:
将它们命名为(在模块/文件夹中)是一个好习惯吗?有什么缺点? EG:
等
(而不是ShopCategory,有Shop :: Category?)
控制器是否也应该以相同的方式命名空间?
答案 0 :(得分:2)
我做的很多。
所以是的,我认为这是你应该做的事情。
如果您将模型细分为子目录而不是将它们全部放在同一个模型中,那么查看模型会更容易。
同样的建议对您的控制器和您的观点也有效。
答案 1 :(得分:2)
我最近发现了这篇文章,但是从2007年起Pratik Naik。模型中的命名空间并不真正类似于数据库。使用类似下面的东西。甚至还有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 :(得分:-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在模型下创建一个命名空间的Version类)