1

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

  • 网站 (模型: Site, Page )
  • 博客(模型:帖子,评论
  • 店铺(型号:类别、产品、订单
  • 跟踪(模型:访客、内容

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

  • 网站(型号:Site、SitePage
  • 博客(模型:BlogPost、BlogComment
  • 商店(型号:ShopCategory、ShopProduct、ShopOrder
  • 跟踪(模型:TrackingVisitor、TrackingContent

但这看起来很奇怪,并且会产生很多额外的输入。

你怎么看?忽略命名空间并希望不会遇到命名冲突(例如博客应用程序的“类别”模型=>错误)是一种好风格,还是应该在每个模型前面加上应用程序名称?

提前致谢。

干杯马克

4

2 回答 2

1

I use a module as namespace ie:

module BlogModels
  class Category
  end
end

and works quite well example with dm because I've namespaced table_name, btw your way BlogCategory is also fine to me.

于 2011-09-12T14:20:32.443 回答
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

于 2011-09-12T19:17:45.180 回答