2013-09-27 40 views
0

我似乎总是在类似post.rb,post_comment.rb,post_rating.rb等等的文件夹名称空间中遇到40个不同的模型。有没有什么办法可以在rails中使用类似模块的东西,一个单独的目录? (该目录也可以包含不同的控制器和视图)。针对大型项目的更好的Rails文件结构?

Rails引擎似乎很有前途,但也许还有别的东西我错过了?

我认为这会使项目更容易概览并作为新的合作者进入。

如果您有意见反对,请告诉!

回答

2

我使用的命名空间。

当你运行命令rails g scaffold blog/post时,它会在博客命名空间下生成Post。

应用程序/模型/ blog.rb

module Blog 
    def self.table_name_prefix 
    'blog_' 
    end 
end 

应用程序/模型/博客/ post.rb

class Blog::Post < ActiveRecord::Base 
    has_and_belongs_to_many :categories 
end 

应用程序/模型/博客/ category.rb

class Blog::Category < ActiveRecord::Base 
    has_and_belongs_to_many :posts 
end 
0

举例来说,您可以将所有的post_*.rb模型放入posts文件夹中。确保该文件夹中的每个模型重命名Posts::Post*class Posts::PostRating < ActiveRecord::Base

而不是更新您的代码库的所有模型的类引用,在我看来,这很可能只是更容易让他们所有的车型目录和处理有一个臃肿的模型目录的痛苦。

相关阅读:

1

看来你的造型有一些问题。

评论是一条评论。帖子可以有评论,照片可以有评论。但是,像post_comment,photo_comment这样的模特绝对不是一个好习惯。那么,我只看到“post_comment”的问题,但我想你是出于这个原因命名它。

你会忙于跟随和工作,这些模型具有相似的功能,然后他们的控制器,他们的意见。 “post_rating”等也是如此。

我不会说40+型号太多了。但看到新的Basecamp有50多个模型,而Dispora有30多个没有子文件夹的模型,可能值得对你的应用程序的体系结构进行审查以减少一些。

如果您打算对其他人使用“评论”,如“照片”,则可以直接使用该名称,并计划关联,多态,模块来干代码。