Ruby on rails Moped::BSON::ObjectId或父对象的字符串';Rails模型中的id是多少?

Ruby on rails Moped::BSON::ObjectId或父对象的字符串';Rails模型中的id是多少?,ruby-on-rails,mongoid,relationship,objectid,Ruby On Rails,Mongoid,Relationship,Objectid,我不熟悉MongoDB和Mongoid,在我的Rails(3.2.13)应用程序中使用Mongoid 3.1.4。我在遗留代码中看到人们在引用模型的某处同时使用type:Moped::BSON::ObjectId和type:String 范例 class Team include Mongoid::Document field :room_id, type: String field :leader_id, type: Moped::BSON::ObjectId ... en

我不熟悉MongoDB和Mongoid,在我的Rails(
3.2.13
)应用程序中使用
Mongoid 3.1.4
。我在遗留代码中看到人们在引用模型的某处同时使用
type:Moped::BSON::ObjectId
type:String

范例

class Team
  include Mongoid::Document

  field :room_id, type: String
  field :leader_id, type: Moped::BSON::ObjectId

  ...
end
(使用
git-burn
我知道这两行是由两个不同的人写的)

我搜索了一下,但还没有找到问题的答案:什么时候/为什么要使用什么类型<代码>字符串或
Moped::BSON::ObjectId


谢谢,

两者都有点奇怪,您通常会建立关系,而不是直接将id存储为字符串或ObjectId:

class Team
  include Mongoid::Document

  belongs_to :room
  belongs_to :leader

  ...
end
这也允许您通过呼叫房间id或领导id直接读取id。 欲了解更多信息,请查看或


如果必须在两者之间进行选择,我将存储ObjectId而不是字符串,这样会占用更少的存储空间。

存储ObjectId还可以避免在查询时出现大量类型转换废话。objectid和string通常看起来相同,但实际上不同;有时Mongoid会为您将字符串转换为ObjectID,有时则不会。