当前位置:  开发笔记 > 编程语言 > 正文

与mongoid的关系,我应该使用什么?

如何解决《与mongoid的关系,我应该使用什么?》经验,为你挑选了1个好方法。

我正在使用带有mongoid的Ruby on Rails 3.1并试图在帖子,评论,用户和标签之间建立一个相当简单的关系.我对mongodb很新,而且一般都没有sql,所以我有点困惑.

我想要完成的是:用户,帖子和评论应该能够有多个标签.标签应具有名称,类型以及使用次数的计数.我需要能够获得所有可用的标签,以便用户可以从中进行选择.反之,能够从用户,帖子和评论中检索标签.

我已经阅读了很多关于它的内容,但似乎无法弄清楚我应该采取哪种方法.我应该使用参考或嵌入式关系吗?我看了几个宝石,但似乎没有人像我上面描述的那样工作.

旁注:我稍后将使用Tire作为我的搜索功能.



1> Tyler Brock..:

很酷,欢迎来到MongoDB!这很难做对,取决于你的应用程序,但我会尝试根据你写的内容和我认为最有效的方法给你一些指示.

情况并非总是如此,但一般理论是,如果一个对象总是被操纵并在另一个对象的上下文中查看,那么你应该将它嵌入到该对象中.您的应用程序中的评论和帖子可能就是这种情况.因此,您可能希望在帖子中嵌入评论.

但是,因为您在多个上下文中使用标记对象,所以我会将它作为自己的集合,如下所示:

class Tag
    include Mongoid::Document
    field :tag, type: String
    field :type, type: String
    field :count, type: Integer
end

让我们按照您的要求运行并构建模型.

标签应具有名称,类型以及使用次数的计数.

通过上面的Tag类代码完成.

用户,帖子和评论应该能够有多个标签.

好吧,让我们给这些类中的每一个一个"标签"字段,它有一个标签ID数组,这将是一个参考关系.

class User
    include Mongoid::Document
    field :first_name, type: String
    field :last_name, type: String
    field :email, type: String
    field :tags, type: Array
end

此外,我们将在帖子中嵌入评论,同时拥有像我们为用户所做的标记ID数组.

class Post
    include Mongoid::Document
    field :subject, type: String
    field :body, type: String
    field :tags, type: Array
    embeds_many :comments
end

class Comment
    include Mongoid::Document
    field :name, type: String
    field :type, type: String
    field :count, type: Integer
    embedded_in :post
end

合理?有一些更多的信息在这里对建模Rails的关系,这些种种,但使用mongomapper代替mongoid(所以不要注重语法,但要注意提出的想法)

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有