我似乎总是被40个不同的模型困在相同的文件夹中,比如post.rb、post_comment.rb、post_rating.rb等。有没有办法在rails中制作类似模块的东西,用posts把所有东西都放在一个单独的目录中呢?(这个目录也可以包括不同的控制器和视图)。
Rails引擎看起来很有希望,但也许我还错过了什么?
我认为,这将使项目更容易概述和进入作为一个新的合作者。
如果你有反对意见,请告诉我!
发布于 2013-09-27 18:33:48
我使用名称空间。
当您运行命令rails g scaffold blog/post时,它将在博客命名空间下生成Post。
app/models/blog.rb
module Blog
def self.table_name_prefix
'blog_'
end
endapp/model/blog/post.rb
class Blog::Post < ActiveRecord::Base
has_and_belongs_to_many :categories
endapp/model/blog/models.app
class Blog::Category < ActiveRecord::Base
has_and_belongs_to_many :posts
end发布于 2013-09-27 18:46:23
你的模特好像有点问题。
评论就是评论。一篇文章可以有评论,一张照片可以有评论。但是,拥有像post_comment、photo_comment这样的模型肯定不是一个好的实践。嗯,我只看到有疑问的"post_comment“,但我想你是出于这样的原因来命名它的。
您将忙于跟踪和工作这些具有类似功能的模型,然后是它们的控制器、视图。"post_rating“等也是如此。
我不会说40+模型太多了。但是看到新的Basecamp有50+模型,Dispora有没有子文件夹的30+模型,也许值得对应用程序的架构进行回顾以减少一些。
如果您计划使用“注释”,“评级”对其他如“照片”,您可以直接使用名称,并计划关联,多态,模块干燥代码。
发布于 2013-09-27 18:18:42
例如,您可以将所有post_*.rb模型放置到posts文件夹中。确保用Posts::Post* ie class Posts::PostRating < ActiveRecord::Base重命名文件夹中的每个模型
我认为,与更新代码库中的所有模型的类引用相比,更容易的方法是将它们全部放在models目录中,并处理臃肿的models目录所带来的痛苦。
有关读数:
https://stackoverflow.com/questions/19057321
复制相似问题