Rails Rails 使用 Mongoid 出现 Cant canonicalize query

loyalpartner · 2015年02月16日 · 最后由 loyalpartner 回复于 2015年02月16日 · 2059 次阅读

rails 版本: 4.2.0 mongid 版本: 4.0.0

出错代码: @current_user ||= (User.find session[:user_id] if session[:user_id])

The operation: #<Moped::Protocol::Query @length=93 @request_id=9 @response_to=0 @op_code=2004 @flags=[] @full_collection_name="mongoid_study_development.users" @skip=0 @limit=0 @selector={"_id"=>{"$oid"=>BSON::ObjectId('54ddcb9e6361700900000000')}} @fields=nil> failed with error 17287: "Can't canonicalize query: BadValue unknown operator: $oid" See https://github.com/mongodb/mongo/blob/master/docs/errors.md for details about this error.
共收到 4 条回复

是 id 还是 oid?

#1 楼 @heylonj 我存到 session 里面的时候 session[:user_id] 还是 BSON::ObjectId('54ddcb9e6361700900000000'),可是页面加载完,session[:user_id] 就变成 {"$oid"=>"54ddcb9e6361700900000000"}

3楼 已删除
4楼 已删除
session[:user_id] = user.id.to_s
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册