2013-09-27 41 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多個沒有子文件夾的模型,可能值得對你的應用程序的體系結構進行審查以減少一些。

如果您打算對其他人使用「評論」,如「照片」,則可以直接使用該名稱,並計劃關聯,多態,模塊來幹代碼。