0

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

このオブジェクトで任意のセレクター (ゲッター/セッター) を使用しようとすると、次のように返されます。 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に移行する途中で、これに困惑しています。

4

1 に答える 1

0

また、渡された場所が「作成」ではなく「新規」からのものであることを忘れていました。それを作成に交換すると、問題が修正されました。

于 2013-02-26T10:39:32.047 に答える