17

从一开始,Rails 就遇到了命名空间模型的问题。随着时间的推移,几乎每个人都放弃了使用它。包括我自己。

随着 Rails 2.3 的发布,我想了解最新情况。我想到的具体问题是:

  • 首先,可以去吗?
  • 表命名,遵循什么规则?
  • 关联,如何以最少的冗长声明它们?如何命名外键列?
  • 自动要求,如果将模型文件放在与命名空间匹配的子目录中,它会起作用吗?或者,如何命名和放置文件?
  • 代,模型生成器是否成功且正确地处理命名空间?
  • 生成器,包括控制器的脚手架生成器怎么样?
  • 应该注意的任何不兼容性/怪癖?
4

3 回答 3

14

我在这个问题上看到的最好的文章来自Strictly Untyped。据我所知,2.3 没有解决任何问题,这意味着它们仍然不可靠。

于 2009-03-05T15:50:40.663 回答
3

我们最近在公司内部就这个问题进行了一场大辩论。我想在一天结束的时候,我们认为如果你不能在数据库中命名表,那么给模型命名是没有意义的。我们决定为我们的模型添加前缀(用户、用户地址、用户电子邮件地址)并将它们放入用户目录,然后使用:

config.load_paths << "#{RAILS_ROOT}/app/models/users"

加载模型。为了控制模型中的详细程度,我们经常这样做:

has_many :addresses, :class_name => "UserAddress"

生成的时候,我们就好像没有命名空间一样创建(脚本/生成模型UserAddress)然后手动复制到用户目录下。

耸耸肩。我想最后这一切真正给你的是一个更干净的目录结构,这对于像我这样的 VIM 用户来说实际上更麻烦,但对 TextMaters 来说很好。

于 2009-03-04T23:15:03.503 回答
-2

我还是会远离它。当您考虑到代码中的简洁性和清晰度的麻烦和损失时,任何获得的东西(我不确定那会是什么)肯定会丢失。

我最新的应用程序有 87 个资源,并且包括所有地方的管理功能。我认为不需要命名空间,恕我直言。

于 2009-03-04T23:26:21.013 回答