My ruby model, like so:
class User
include Mongoid::Document
field :first_name, type: String
field :birthdate, type: Date
validates :first_name, :birthdate, :presence => true
end
outputs an object like so:
{
_id: {
$oid: "522884c6c4b4ae5c76000001"
},
birthdate: null,
first_name: null,
}
My backbone project has no idea how to handle _id.$oid.
I found this article and code:
https://github.com/rails-api/active_model_serializers/pull/355/files
module Moped
module BSON
class ObjectId
alias :to_json :to_s
end
end
end
I have no idea where to put this, and how to invoke it on the model output, so I tried inside:
/config/initializers/secret_token.rb
I'm new to Ruby and Rails and have no idea how to proceed, so any help is greatly appreciated
Iterating on Kirk's answer:
In Mongoid 4 the Moped’s BSON implementation has been removed in favor of the MongoDB bson gem, so the correct version for Mongoid 4 users is:
module BSON
class ObjectId
def to_json(*args)
to_s.to_json
end
def as_json(*args)
to_s.as_json
end
end
end
What you should do is place this in the initializer folder, create a file like this:
/config/initializers/mongoid.rb
module Moped
module BSON
class ObjectId
alias :to_json :to_s
alias :as_json :to_s
end
end
end
For guys using Mongoid 4+ use this,
module BSON
class ObjectId
alias :to_json :to_s
alias :as_json :to_s
end
end
Reference
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With