次のような位置情報クエリによって返される Mongo オブジェクトの配列があります。
@data = Record.geo_near([lng,lat], :max_distance => dist, :unit => :m, :spherical => true)
次に、予想される形式に基づいて応答をシリアル化しようとしています:
respond_to do |format|
format.html
format.json { render json: @data, :status => 200 } # Not working
format.xml { render xml: @data, :status => 200 } # Working !
end
奇妙なことに、XML ではすべてがスムーズに進みますが、JSON では次のエラーが発生します。
ActiveSupport::JSON::Encoding::CircularReferenceError in BouncesController#populars
object references itself
同じ種類のエラーに関連するこの投稿を見つけましたが、検証済みの回答はうまくいきませんでした。
何か案は?
編集
問題が発生している私のモデルは次のとおりです。
class MyModel
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Spacial::Document
spacial_index :loc, :min => -180, :max => 180
belongs_to :user
field :text, :type => String
field :loc, :type => Array, spacial: true
field :accuracy, :type => Float
def as_json(options={})
{
"id" => self.id,
"text" => self.text,
"loc" => self.loc,
"accuracy" => self.accuracy,
"user" => {
"id" => self.user['_id'],
"login" => self.user['login'],
"role" => self.user['role']
},
"created_at" => self.created_at,
"updated_at" => self.updated_at
}
end
end