Ruby Padrino中的多个应用程序:如何命名模型?

时间:2011-09-12 14:00:47

标签: ruby coding-style models padrino

我有一个Padrino项目,包含多个应用程序。例如:

  • 网站(模特:网站,网页
  • 博客(模特:发布,评论
  • 购物(型号:类别,产品,订单
  • 跟踪(模特:访客,内容

将所有未修改的模型放入一个目录在我看来就像一团糟。所以我想把它们命名为:

  • 网站(模型:网站,网页
  • 博客(模特:BlogPost,BlogComment
  • 购物(型号:ShopCategory,ShopProduct,ShopOrder
  • 跟踪(模型:TrackingVisitor,TrackingContent

但这看起来很奇怪,会产生很多额外的打字。

你怎么看?忽略命名空间并希望不会遇到命名冲突(例如Blog app => Error的“类别”模型)或者我应该将应用名称添加到每个模型中是不错的风格?

提前致谢。

干杯马克

2 个答案:

答案 0 :(得分:1)

我使用模块作为名称空间,即:

module BlogModels
  class Category
  end
end

并且与dm一起工作得非常好,因为我已经命名为table_name,顺便说一下BlogCategory对我来说也很好。

答案 1 :(得分:0)

我找到了一种合理的方法来命名Mongoid中的模型并保持开销很小。

我将这些模型命名为:BlogPost,BlogComment,BlogCategory

在模型中我使用了class_name和inverse_of:

class BlogPost

  include Mongoid::Document

  # ... lots of stuff ommitted

  has_many :comments, class_name: 'BlogComment', inverse_of: :post
end

class BlogComment

  include Mongoid::Document

  # ... lots of stuff ommitted

  belongs_to :post, class_name: 'BlogPost', inverse_of: :comments
end

通过以下方式访问:

post = BlogPost.first
post.comments.first # get comments

BlogComment.first.post # get related post

这使访问链保持简短,然后更好:

post = BlogPost.first
post.blog_comments.first # get comments

BlogComment.first.blog_post # get related post

更多详情:http://mongoid.org/docs/relations.html