在我的Rails API中,我希望Mongo对象作为
JSON字符串返回,Mongo UID作为“id”属性而不是“_id”对象.
我希望我的API返回以下JSON:
{ "id": "536268a06d2d7019ba000000","created_at": null,}
代替:
{ "_id": { "$oid": "536268a06d2d7019ba000000" },}
我的型号是:
class Profile include Mongoid::Document field :name,type: String def to_json(options={}) #what to do here? # options[:except] ||= :_id #%w(_id) super(options) end end
解决方法
你可以猴子补丁Moped :: BSON :: ObjectId:
module Moped module BSON class ObjectId def to_json(*) to_s.to_json end def as_json(*) to_s.as_json end end end end
要处理$oid的东西,然后Mongoid :: Document将_id转换为id:
module Mongoid module Document def serializable_hash(options = nil) h = super(options) h['id'] = h.delete('_id') if(h.has_key?('_id')) h end end end
这将使所有的Mongoid对象行为明智.