我有一个名为 location 的 mongo 文档:
class Location < MongoDocument
field :latitude, type: Float
field :longitude, type: Float
end
MongoDocument 是这样的:
class MongoDocument
include Mongoid::Document
include Mongoid::Timestamps
end
在另一个 mongo 文档中,我有一个方法:
def self.local(location, limit_results)
if location.present? && location.latitude.present?
#run some code
end
end
在调试中,我可以检查位置,它会识别对象并将显示其内容的哈希值:
{Location}#<Location:0x6fa5798>
@_id = {BSON::ObjectId}512b2330b109ab17fc00002c
@latitude = nil
@longitude = nil
如果我尝试在这个对象上使用任何选择器(getter/setter),它会返回:
undefined method '[]' for nil:NilClass
我努力了:
location[:id]
location['id']
location.id
location[:latitude]
location['latitude']
location.latitude
location[:longitude]
location['longitude']
location.longitude
有什么线索吗?我正在将我的代码从 mongomapper 迁移到 mongoid 中,对此我感到很困惑。