Gia*_*yen 2 ruby-on-rails relationship mongoid objectid
我是MongoDB和Mongoid的新手,Mongoid 3.1.4用于我的Rails(3.2.13)应用程序.我在遗留代码中看到人们使用两者type: Moped::BSON::ObjectId和type: String某处的参考模型.
例
class Team
include Mongoid::Document
field :room_id, type: String
field :leader_id, type: Moped::BSON::ObjectId
...
end
Run Code Online (Sandbox Code Playgroud)
(使用git blame我知道由2个不同的人写的这两行)
我做了一个搜索,但没有找到问题的答案何时/为什么使用什么类型?String要么Moped::BSON::ObjectId
谢谢,
小智 5
两者都有点奇怪,你通常建立关系而不是直接将id存储为字符串或ObjectId:
class Team
include Mongoid::Document
belongs_to :room
belongs_to :leader
...
end
Run Code Online (Sandbox Code Playgroud)
这也允许您通过调用room_id或leader_id直接读取id.有关详细信息,请访问http://mongoid.org/en/mongoid/docs/relations.html或http://two.mongoid.org/docs/relations.html
如果我必须在两者之间做出选择,我会存储ObjectId而不是字符串,但它占用的存储空间更少.