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

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

  • 首先,可以出发吗?
  • 表命名,遵循什么规则?
  • 关联,如何以最简洁的方式声明它们?如何命名外键列?
  • 自动要求,如果将模型文件放在与命名空间匹配的子目录中,它会起作用吗?或者,如何命名文件以及将文件放置在何处?
  • 生成,模型生成器是否成功且正确地处理名称空间?
  • 生成,那么包含控制器的脚手架生成器怎么样?
  • 有什么不兼容/怪癖需要注意吗?
有帮助吗?

解决方案

我见过的关于这个问题的最好的文章来自 严格无类型. 。据我所知,2.3 尚未解决任何问题,这意味着它们仍然不可靠。

其他提示

最近我们公司内部对此进行了一场大辩论。我认为归根结底,我们认为如果无法为数据库内的表命名空间,那么为模型命名空间就没有意义。我们决定为模型添加前缀(User、UserAddress、UserEmailAddresses)并将它们放入 users 目录中,然后使用:

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

加载模型。为了控制模型中的冗长性,我们经常这样做:

has_many :addresses, :class_name => "UserAddress"

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top