我想重寫那種_id一代的mongoid(另一個應用程序,這股DB使用的String
代替ObjectId()
如何全局覆蓋Mongoid :: Document._id代
我可以通過添加做到這一點對每一個模型這樣的:?
field :_id, type: String, default: -> { BSON::ObjectId.new.to_s }
但是,如何在全球範圍內將這個附加保持乾燥
我想重寫那種_id一代的mongoid(另一個應用程序,這股DB使用的String
代替ObjectId()
如何全局覆蓋Mongoid :: Document._id代
我可以通過添加做到這一點對每一個模型這樣的:?
field :_id, type: String, default: -> { BSON::ObjectId.new.to_s }
但是,如何在全球範圍內將這個附加保持乾燥
非常有效的用例,但looking into the code你可能已在Mongoid ::場運氣的,但是你可以重寫mongoize
WH ich應該這樣走
Item.new.id
=> BSON::ObjectId('56e727892ada693ea8000000')
class BSON::ObjectId
def self.mongoize(k)
k.to_s
end
end
Item.new.id
=> "56e7276f2ada693737000002"
嗯,似乎正在工作,但'Item.find(params [:id])'不再工作。 '消息: 未找到具有ID(s)56e728dfa54d752083e7435a類的用戶的文檔。 摘要: 使用id或id數組調用User.find時,每個參數必須與數據庫中的文檔相匹配,否則將引發此錯誤。搜索僅供參考:56e728dfa54d752083e7435a ...(總共1件)以及未找到以下ID:56e728dfa54d752083e7435a.' – Jan
您的metor應用程序的年齡?我問,因爲相當長一段時間以來,在Metor中有一個選項來存儲id本身,而不僅僅是一個字符串:http://docs.meteor.com/#/full/meteor_collection –
這是新的。在你建議更新之後,我創建了一個新的(1.2.1):這裏是一個主要的https://gist.github.com/mediatainment/b451b021fbb34e61f3f6 – Jan
你忘了添加你正在使用的mongoid版本。 TBH,我沒有看到這一點。你想用這個做什麼? –
版本5.1.x.我想將我的'RoR'應用程序連接到'meteor'託管的'mongoDb'。這個'流星應用程序'將mongoDb ObjectId寫成一個字符串。如果我不覆蓋'mongoid' _id,它將不會獲取流星應用程序創建的條目。 – Jan