ruby-on-rails – Ember-data和MongoDB,如何处理_id

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Ember-data和MongoDB,如何处理_id前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用带有rails和MongoDB的ember-data,并且在_id字段中存在MongoDB中的ID存在问题.

Ember数据将使用ID作为ID的默认字段,因此我尝试重写它,如下所示:

App.User = DS.Model.extend
    primaryKey: "_id"
    name: DS.attr "string"
    image: DS.attr "string"

这似乎在大部分时间都可以工作,但在某些情况下,我从Ember中得到例外:

Uncaught Error: assertion Failed: Your server returned a hash with the
key _id but you have no mappings

我怀疑这可能是垃圾数据中的一个错误,因为它仍然在开发中,但是我试图找到一种方法来在服务器端映射_id到id?我正在使用mongoid来做mongo映射.

解决方法

如果你在这里使用Mongoid,那就是一个解决方案,使得你不必添加一个方法def id; object._id.to_s;结束到每个序列化器

添加以下Rails初始化程序

Mongoid 3.x

module Moped
  module BSON
    class ObjectId
      alias :to_json :to_s
      alias :as_json :to_s
    end
  end
end

蒙古4

module BSON
  class ObjectId
    alias :to_json :to_s
    alias :as_json :to_s
  end
end

活动模型序列化程序

class BuildingSerializer < ActiveModel::Serializer
  attributes :id,:name
end

产生的JSON

{
  "buildings": [
    {"id":"5338f70741727450f8000000","name":"City Hall"},{"id":"5338f70741727450f8010000","name":"Firestation"}
  ]
}

这是brentkirby建议的猴子补丁,并在arthurnn之前更新了Mongoid 4

猜你在找的Ruby相关文章