从一开始,Rails 就遇到了命名空间模型的问题。随着时间的推移,几乎每个人都放弃了使用它。包括我自己。
随着 Rails 2.3 的发布,我想了解最新情况。我想到的具体问题是:
- 首先,可以去吗?
- 表命名,遵循什么规则?
- 关联,如何以最少的冗长声明它们?如何命名外键列?
- 自动要求,如果将模型文件放在与命名空间匹配的子目录中,它会起作用吗?或者,如何命名和放置文件?
- 代,模型生成器是否成功且正确地处理命名空间?
- 生成器,包括控制器的脚手架生成器怎么样?
- 应该注意的任何不兼容性/怪癖?
从一开始,Rails 就遇到了命名空间模型的问题。随着时间的推移,几乎每个人都放弃了使用它。包括我自己。
随着 Rails 2.3 的发布,我想了解最新情况。我想到的具体问题是:
我在这个问题上看到的最好的文章来自Strictly Untyped。据我所知,2.3 没有解决任何问题,这意味着它们仍然不可靠。
我们最近在公司内部就这个问题进行了一场大辩论。我想在一天结束的时候,我们认为如果你不能在数据库中命名表,那么给模型命名是没有意义的。我们决定为我们的模型添加前缀(用户、用户地址、用户电子邮件地址)并将它们放入用户目录,然后使用:
config.load_paths << "#{RAILS_ROOT}/app/models/users"
加载模型。为了控制模型中的详细程度,我们经常这样做:
has_many :addresses, :class_name => "UserAddress"
生成的时候,我们就好像没有命名空间一样创建(脚本/生成模型UserAddress)然后手动复制到用户目录下。
耸耸肩。我想最后这一切真正给你的是一个更干净的目录结构,这对于像我这样的 VIM 用户来说实际上更麻烦,但对 TextMaters 来说很好。
我还是会远离它。当您考虑到代码中的简洁性和清晰度的麻烦和损失时,任何获得的东西(我不确定那会是什么)肯定会丢失。
我最新的应用程序有 87 个资源,并且包括所有地方的管理功能。我认为不需要命名空间,恕我直言。