我在组织 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
)的问题。
是否有关于多级命名空间模型的任何约定?
你有没有问过自己为什么要嵌套模型?在我看来,您正试图将命名空间硬塞进执行逻辑,而这些逻辑最好留给关联。
如果您查看ActiveRecord 关联文档,您会注意到在第一个示例中,Book
它Author
是顶级模型——没有提及Book::Author
或类似的内容。这是你的约定。
随着您的应用程序变得越来越大和越来越复杂,可能会出现模型命名空间合适的情况(例如,特定于不同用户类型的资源),但我不认为它在这里。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句