我在组织Rails项目及其有关文件夹结构和约定的模型方面遇到了一些麻烦,我似乎没有找到任何与此相关的内容。
假设我要创建一个Cinema
模型,此Cinema
包含多个Cinema::Location
模型,每个Cinema::Location
都有许多Cinema::Location::Movie
个模型,除此之外每部电影可能都有Cinema::Location::Movie::Review
,更不用说每篇评论可能有评论......
我的文件夹结构如下所示:
这是一个有组织的解决方案,但与此同时,它看起来不太好,如果我们谈论表格(cinema_location_movie_review_comment_replies
)会更糟。
我可以做的一件事就是组织这样的模型:Cinema::Location
用于位置,Location::Movie
用于电影,Movie::Review
用于评论等。
文件夹结构如下所示:
这解决了表名(location_movie
或movie_review
)的问题。
是否有关于多级命名空间模型的约定?
答案 0 :(得分:1)
你有没有问过自己为什么要将你的模型嵌套?在我看来,你正试图将名称空间命名为执行逻辑,最好留给关联。
如果您查看ActiveRecord associations docs,您会注意到在第一个示例中,Book
和Author
是顶级模型 - 没有提到{{1}或类似的东西。这是你的惯例。
随着您的应用程序变得越来越大,越来越复杂,可能会出现模型命名空间合适的情况(例如,特定于不同用户类型的资源),但我不认为它就在这里。