Ruby on rails 在Rails中组织名称空间模型和相关模型

Ruby on rails 在Rails中组织名称空间模型和相关模型,ruby-on-rails,model,Ruby On Rails,Model,我在组织一个Rails项目及其关于文件夹结构和约定的模型时遇到了一些麻烦,我似乎在任何地方都找不到任何与此相关的东西 假设我想创建一个电影院模型,这个电影院有许多电影院::位置模型,每个电影院::位置都有许多电影院::位置::电影放映,除此之外,每部电影都可能有一个电影院::位置::电影::回顾,更不用说每篇评论都可能有评论 我的文件夹结构如下所示: app/models/cinema.rb app/models/cinema/location.rb app/models/cinema/loc

我在组织一个Rails项目及其关于文件夹结构和约定的模型时遇到了一些麻烦,我似乎在任何地方都找不到任何与此相关的东西

假设我想创建一个
电影院
模型,这个
电影院
有许多
电影院::位置
模型,每个
电影院::位置
都有许多
电影院::位置::电影
放映,除此之外,每部电影都可能有一个
电影院::位置::电影::回顾
,更不用说每篇评论都可能有评论

我的文件夹结构如下所示:

  • app/models/cinema.rb
  • app/models/cinema/location.rb
  • app/models/cinema/location/movie.rb
  • app/models/cinema/location/movie/review.rb
  • app/models/cinema/location/movie/review/comment.rb
这是一个有组织的解决方案,但同时,它看起来不太好,如果我们谈论表格(电影、地点、电影、评论、回复)

我可以做的一件事是像这样组织模型:
Cinema::Location
用于位置,
Location::Movie
用于电影,
Movie::Review
用于评论,等等

文件夹结构如下所示:

  • app/models/cinema.rb
  • app/models/cinema/location.rb
  • app/models/location/movie.rb
这就解决了表名的问题(
location\u movie
movie\u review


关于多级名称空间模型有什么约定吗?

你有没有问过自己为什么要嵌套模型?在我看来,您似乎试图将名称空间硬塞进执行逻辑的过程中,而这种逻辑最好留给关联来执行

如果您查看,您会注意到在第一个示例中,
Book
Author
是顶级模型——没有提到
Book::Author
或类似的内容。这是你的惯例


随着应用程序变得越来越大、越来越复杂,可能会出现模型名称空间适当的情况(例如,针对不同用户类型的资源),但我认为情况并非如此。

我应该如何处理仅用于引用一个其他模型的模型?例如,只有
电影院
可以有许多
位置
型号,而
电影院
可以通过
位置
有许多
电影
?我想我刚才回答了自己的问题。谢谢是的:-)而且,在我看来,
地点
可能有很多电影,因为你可能想在那里建立一种多对多的关系(也就是说,在
地点
有很多
电影
,但这些
电影
都在很多
地点放映)。这取决于您在数据模型中的目标,但似乎您走在了正确的轨道上。