ruby-on-rails-3 - 带有 Mongoid Embedded 和 Standalone 的 Rails 模型

标签 ruby-on-rails-3 mongodb mongoid

我如何创建一个能够保存在自己的集合中并嵌入到另一个文档中的 Mongoid 模型?

最佳答案

简短的回答:你不能。

当您在两个 Mongoid 文档之间使用嵌入关系时,这是因为您希望子模型在其自己的集合中。嵌入式文档字面意思是:嵌入在其父级中。

我不确定您是否是 Mongoid 的新手,所以您实际上可能正在寻找的是引用关系,它的行为更像传统的 RDBMS 关系,其中子文档存储对父文档 ID 的引用. Mongoid 文档以 here 开头.

鉴于这些嵌入式模型,在两者之间切换非常容易:

class Person
  include Mongoid::Document

  field :name
  embeds_many :phone_numbers
end

class PhoneNumber
  include Mongoid::Document

  field :area_code
  field :number

  embedded_in :person
end

你可以只改变embeds_manyembedded_in,这样就变成了:

class Person
  include Mongoid::Document

  field :name
  has_many :phone_numbers
end

class PhoneNumber
  include Mongoid::Document

  field :area_code
  field :number

  belongs_to :person
end

它会正常工作。现在,您将能够使用以下语句直接查询电话号码:PhoneNumber.where(:area_code => "212")

关于ruby-on-rails-3 - 带有 Mongoid Embedded 和 Standalone 的 Rails 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024826/

相关文章:

ruby-on-rails - Rails - 如何访问当前环境的主机 URL?

javascript - 如何根据游戏应用程序的聚合管道中的总点数计算排名

ruby-on-rails - 生产中的 MongoDB 和 Mongoid

ruby-on-rails - Mongoid:为适合选项的embedded_in对象返回不同的值

ruby-on-rails - Rails - 如何在布局中查找域 url

ruby-on-rails - 使用 Postgres,计算关联计数

ruby-on-rails - 如何在 Rails 3 中的过滤器方法之前测试应用程序 Controller ?

ruby ,Mongodb, Anemone : web crawler with possible memory leak?

mongodb - 服务器端 mongo-dart DB 的程序和下载

ruby-on-rails - 如何使用 FactoryGirl 创建嵌入式文档?