我想覆盖mongoid中的_id生成类型(另一个应用程序,它使用String
而不是ObjectId()
来共享数据库
我可以通过添加以下内容为每个模型执行此操作:
field :_id, type: String, default: -> { BSON::ObjectId.new.to_s }
但是如何全局附加它以保持干燥?
答案 0 :(得分:0)
非常有效的用例,但looking into the code你可能在Mongoid :: Fields上运气不好,但是你可以覆盖mongoize
这应该是这样的
Item.new.id
=> BSON::ObjectId('56e727892ada693ea8000000')
class BSON::ObjectId
def self.mongoize(k)
k.to_s
end
end
Item.new.id
=> "56e7276f2ada693737000002"