如何展示Mongoid嵌入式集合?

时间:2011-05-07 22:29:05

标签: ruby-on-rails mongoid database-relations

我在我的rails3应用程序中设置了mongoid,并创建了2个模型。 一个模型是用户,另一个模型是文章。

由于我每个用户都可以创建很多文章,我已经把:

embedded_in :user

在model / article.rb文件中,并且:

embeds_many :articles

在model / user.rb文件中。

现在,如果我通过'app_url / articles / random_article_id'访问文章,我会收到以下错误。

Access to the collection for Article is not allowed since it is an embedded document, please access a collection from the root document.

虽然我想保持关系,但我希望任何人都可以访问文章。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

听起来你想要的是一个被引用的关系而不是嵌入关系:http://mongoid.org/docs/relations/referenced.html

答案 1 :(得分:1)

另外,如果您确实需要嵌入文章,请执行以下操作:

User.where("article.id" => params[:id].first.articles.find(params[:id])

但是,正如Ben所说,你最好使用belongs_to而不是embedded_in。