Ruby on rails Mongoid与嵌入标记

Ruby on rails Mongoid与嵌入标记,ruby-on-rails,ruby,mongodb,mongoid,nosql,Ruby On Rails,Ruby,Mongodb,Mongoid,Nosql,我有几个模型,每个都有标签。比如说,一个用户和一个帖子。我认为两者都应该嵌入标签。 用户嵌入的标签是他们的“收藏夹”,帖子的标签是与帖子相关的标签 我使用的是Mongoid,我不知道如何拥有一个标签模型,在那里我可以找到所有的标签(这些标签没有嵌入,我想要一个所有可用标签的单独集合) 当用户尝试添加标记时,将对照tag.all对其进行检查,以确保其存在。如果是,则应将其嵌入用户模型中 我不知道如何在多个模型中嵌入标记模型(User和Post),也不知道如何嵌入标记模型以及像正常情况一样检索它们(

我有几个模型,每个都有标签。比如说,一个
用户
和一个
帖子
。我认为两者都应该嵌入标签。
用户嵌入的标签是他们的“收藏夹”,帖子的标签是与帖子相关的标签

我使用的是Mongoid,我不知道如何拥有一个
标签
模型,在那里我可以找到所有的标签(这些标签没有嵌入,我想要一个所有可用标签的单独集合)

当用户尝试添加标记时,将对照
tag.all
对其进行检查,以确保其存在。如果是,则应将其嵌入
用户
模型中

我不知道如何在多个模型中嵌入标记模型(
User
Post
),也不知道如何嵌入标记模型以及像正常情况一样检索它们(我得到错误:不允许访问标记集合,因为它是嵌入文档,请从根文档访问集合)


想法?我的设计完全错了吗?我不需要像“检索所有拥有
示例
标记的用户”这样复杂的查询,所以我认为我应该嵌入以提高效率。

首先,尝试获取嵌入标记时出现的错误是正常的,这在实际的MongoDB版本中是不可能的

我不是专家,但我可以向您推荐一个可行的解决方案:为用户和帖子使用嵌入式标记,并创建一个用于索引目的的标记集合

  • 当用户尝试添加标记时:调用
    tag.all
    • 如果标签不存在:在用户和标签中创建它
    • 如果有,只需将其嵌入用户

邮政也是如此

首先,尝试获取嵌入标记时出现的错误是正常的,这在实际的MongoDB版本中是不可能的

我不是专家,但我可以向您推荐一个可行的解决方案:为用户和帖子使用嵌入式标记,并创建一个用于索引目的的标记集合

  • 当用户尝试添加标记时:调用
    tag.all
    • 如果标签不存在:在用户和标签中创建它
    • 如果有,只需将其嵌入用户

邮政也是如此

好的,第一步是使标记成为多态嵌入

class User
  embeds_many :tags, :as => :taggable
end

class Post
  embeds_many :tags, :as => :taggable
end

class Tag
  embedded_in :taggable, :polymorphic => true
end
然后,您可能会有一个
用户
的实例或一个包含所有可用标记的
post
。然后,您可以在实例上调用它,而不是在Tag类上调用
.all

available_user = User.new
available_user.tags << Tag.new
available_user.tags.all
available\u user=user.new

可用的_user.tags嗯,第一步是使标记成为多态嵌入

class User
  embeds_many :tags, :as => :taggable
end

class Post
  embeds_many :tags, :as => :taggable
end

class Tag
  embedded_in :taggable, :polymorphic => true
end
然后,您可能会有一个
用户
的实例或一个包含所有可用标记的
post
。然后,您可以在实例上调用它,而不是在Tag类上调用
.all

available_user = User.new
available_user.tags << Tag.new
available_user.tags.all
available\u user=user.new

可用的_user.tags我的解决方案是有一个嵌入许多标记的注册表模型,然后有一个实例,在添加到用户或帖子之前检查已注册的标记。这与Ron的答案基本相同,但不会使用户过载。

我的解决方案是使用一个嵌入许多标记的注册表模型,然后使用一个实例,在添加到用户或帖子之前检查注册的标记。这与Ron的答案基本相同,但不会使用户过载