我有一个包含许多动态属性的Record模型。我想向模型发出请求,将响应作为JSON发送给客户端。但我想在此模型中排除_id
和所有foreign_keys等字段。
我找到了一个有趣的答案,如何排除某些键的值:How do I exclude fields from an embedded document in Mongoid?,但响应中的键仍然存在。
我得到了:
{
"_id": 1,
"name": "tom"
}
without
方法制作:
{
"_id": nil,
"name": "tom"
}
但我想:
{
"name": "tom"
}
是否可以从结果中删除或排除某些键和值?
答案 0 :(得分:6)
您不想从mongoid文档中删除字段,您要做的是从生成的json中删除字段。 在您的控制器中,执行
render :json => @model.to_json(:except => :_id)
to_json方法的文档http://apidock.com/rails/ActiveRecord/Serialization/to_json
答案 1 :(得分:1)
取自:http://docs.mongodb.org/manual/reference/method/db.collection.find/
的mongodb文档从结果集中排除某些字段 以下示例选择与选择条件匹配的文档,并从结果文档中排除一组字段:
db.products.find( { qty: { $gt: 25 } }, { _id: 0, qty: 0 } )
查询返回qty大于25的集合产品中的所有文档。结果集中的文档将包含除_id和qty字段之外的所有字段,如下所示:
{ "item" : "pencil", "type" : "no.2" }
{ "item" : "bottle", "type" : "blue" }
{ "item" : "paper" }
我认为mongoid将_id属性设置为nil,因为mongoid模型具有一组已定义的属性(即使它们是动态的,_id,_type等也是定义的)。也许你可以尝试使用mongodb驱动程序。
但我认为RedXVII答案是更实用的方法