关于视图,控制器和模型的Rails嵌套约定

时间:2015-09-03 03:35:45

标签: ruby-on-rails model convention

所以我有两个模型,Post资源嵌套在Topic中。我的问题是:我应该将Post视图嵌入到主题文件夹中吗?是否将Post控制器嵌套到主题文件夹中?模型怎么样?

我认为无论是否在主题文件夹中,它都能正常工作,但我只是想了解最佳做法。

1 个答案:

答案 0 :(得分:0)

简而言之,不要在文件系统中嵌套资源,因为它们在逻辑上嵌套在数据模型中。

我能想到的三个原因。

  • 如果您的数据模型是深度嵌套的,嵌套文件夹会很快加深,每个级别可能只有一个源文件。
  • 默认情况下,Rails不会自动搜索应用程序/模型或应用程序/控制器的子文件夹中的源文件,因此嵌套只会为您增加额外的工作量(一条线索,您不遵循惯例)。 (但是,如果使用命名空间,它会按惯例查找与命名空间对应的文件夹。)
  • 数据模型和层次结构复杂且随时间而变化;最简单的是无法映射到文件树层次结构。在你的例子中,如何处理Posts可以嵌套在Topic中的场景,让我们说,一个Profile?

在大多数情况下,使用app / models和app / controllers的子文件夹主要在将名称空间放入名称空间时使用。我已经看到了其他用途,但我认为它们归结为组织大量的课程。